数据源切换逻辑全框架优化,设备报修自动审核转维修单

master
Yangwl 3 weeks ago
parent 7a4e65aacb
commit 1ebe3e9854

@ -3,10 +3,13 @@ package com.op.system.api;
import com.op.common.core.constant.ServiceNameConstants;
import com.op.common.core.domain.R;
import com.op.system.api.domain.DataSourcePropertyDTO;
import com.op.system.api.domain.device.DeviceRepairOrder;
import com.op.system.api.domain.device.EquRepairOrderDTO;
import com.op.system.api.domain.device.WorkOrderTangentDTO;
import com.op.system.api.factory.RemoteDeviceFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@ -46,4 +49,9 @@ public interface RemoteDeviceService {
//切线后创建当日新的点检工单
@PostMapping("/deviceTask/createSpotCheckWorkOrder")
public R createSpotCheckWorkOrder(@RequestBody WorkOrderTangentDTO workOrderTangentDTO);
//设备报修审核远程服务调用
@PostMapping("/faultReport/check")
public R check(@RequestBody DeviceRepairOrder deviceRepairOrder);
}

@ -3,6 +3,8 @@ package com.op.system.api.factory;
import com.op.common.core.domain.R;
import com.op.system.api.RemoteDeviceService;
import com.op.system.api.domain.DataSourcePropertyDTO;
import com.op.system.api.domain.device.DeviceRepairOrder;
import com.op.system.api.domain.device.EquRepairOrderDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
@ -62,6 +64,11 @@ public class RemoteDeviceFallbackFactory implements FallbackFactory<RemoteDevice
public R createSpotCheckWorkOrder(com.op.system.api.domain.device.WorkOrderTangentDTO workOrderTangentDTO) {
return R.fail("切换产线,新增点检工单失败:" + throwable.getMessage());
}
@Override
public R check(DeviceRepairOrder deviceRepairOrder) {
return R.fail("自动审核通过失败:" + throwable.getMessage());
}
};
}
}

@ -36,7 +36,13 @@ public class DeviceInterfaceController {
@GetMapping("/getRepairWorkOrder")
public AjaxResult getRepairWorkOrder(EquOperation equOperation) {
DynamicDataSourceContextHolder.push(equOperation.getPoolName());
return deviceInterfaceService.getRepairWorkOrder();
try{
return deviceInterfaceService.getRepairWorkOrder();
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -47,7 +53,11 @@ public class DeviceInterfaceController {
@GetMapping("/getworkFaultReason")
public AjaxResult getworkFaultReason(EquOperation equOperation) {
DynamicDataSourceContextHolder.push(equOperation.getPoolName());
return deviceInterfaceService.getworkFaultReason();
try {
return deviceInterfaceService.getworkFaultReason();
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -58,7 +68,12 @@ public class DeviceInterfaceController {
@GetMapping("/getworkFaultDesc")
public AjaxResult getworkFaultDesc(EquOperation equOperation) {
DynamicDataSourceContextHolder.push(equOperation.getPoolName());
return deviceInterfaceService.getworkFaultDesc();
try {
return deviceInterfaceService.getworkFaultDesc();
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -69,7 +84,11 @@ public class DeviceInterfaceController {
@GetMapping("/getWave")
public AjaxResult getWave(EquOperation equOperation) {
DynamicDataSourceContextHolder.push(equOperation.getPoolName());
return deviceInterfaceService.getWave();
try {
return deviceInterfaceService.getWave();
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
*
@ -79,7 +98,12 @@ public class DeviceInterfaceController {
@GetMapping("/getEquipmentInfo")
public AjaxResult getEquipmentInfo(EquOperation equOperation) {
DynamicDataSourceContextHolder.push(equOperation.getPoolName());
return deviceInterfaceService.getEquipmentInfo(equOperation);
try {
return deviceInterfaceService.getEquipmentInfo(equOperation);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@ -91,7 +115,11 @@ public class DeviceInterfaceController {
@GetMapping("/getRepairQuantity")
public AjaxResult getRepairQuantity(EquOperation equOperation) {
DynamicDataSourceContextHolder.push(equOperation.getPoolName());
return deviceInterfaceService.getRepairQuantity(equOperation);
try {
return deviceInterfaceService.getRepairQuantity(equOperation);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -103,7 +131,12 @@ public class DeviceInterfaceController {
@GetMapping("/equipmentStability")
public AjaxResult getEquipmentStabilityList(EquOperation equOperation) {
DynamicDataSourceContextHolder.push(equOperation.getPoolName());
return deviceInterfaceService.getEquipmentStabilityList(equOperation);
try {
return deviceInterfaceService.getEquipmentStabilityList(equOperation);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -115,7 +148,12 @@ public class DeviceInterfaceController {
@GetMapping("/equipmentIntactRate")
public AjaxResult getEquipmentIntactRate(EquOperation equOperation) {
DynamicDataSourceContextHolder.push(equOperation.getPoolName());
return deviceInterfaceService.getEquipmentIntactRate(equOperation);
try {
return deviceInterfaceService.getEquipmentIntactRate(equOperation);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -125,7 +163,12 @@ public class DeviceInterfaceController {
@GetMapping("/getDeviceRefreshTime")
public AjaxResult getDeviceRefreshTime(EquOperation equOperation) {
DynamicDataSourceContextHolder.push(equOperation.getPoolName());
return deviceInterfaceService.getDeviceRefreshTime(equOperation);
try {
return deviceInterfaceService.getDeviceRefreshTime(equOperation);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -156,7 +199,11 @@ public class DeviceInterfaceController {
@GetMapping("/getCompletedRate")
public AjaxResult getCompletedRate(EquOperation equOperation) {
DynamicDataSourceContextHolder.push(equOperation.getPoolName());
return deviceInterfaceService.getCompletedRate();
try {
return deviceInterfaceService.getCompletedRate();
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -166,7 +213,12 @@ public class DeviceInterfaceController {
@GetMapping("/selectEquRepairWorkOrderDetail")
public AjaxResult selectEquRepairWorkOrderDetail(EquRepairWorkOrderDetailVO equRepairWorkOrderDetailVO) {
DynamicDataSourceContextHolder.push(equRepairWorkOrderDetailVO.getPoolName());
return deviceInterfaceService.selectEquRepairWorkOrderDetail(equRepairWorkOrderDetailVO);
try {
return deviceInterfaceService.selectEquRepairWorkOrderDetail(equRepairWorkOrderDetailVO);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -176,7 +228,12 @@ public class DeviceInterfaceController {
@GetMapping("/selectSpotInspectionList")
public AjaxResult selectSpotInspectionList(EquOrderVO equOrderVO) {
DynamicDataSourceContextHolder.push(equOrderVO.getPoolName());
return deviceInterfaceService.selectSpotInspectionList(equOrderVO);
try {
return deviceInterfaceService.selectSpotInspectionList(equOrderVO);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -186,6 +243,11 @@ public class DeviceInterfaceController {
@GetMapping("/selectInspectionList")
public AjaxResult selectInspectionList(EquOrderVO equOrderVO) {
DynamicDataSourceContextHolder.push(equOrderVO.getPoolName());
return deviceInterfaceService.selectInspectionList(equOrderVO);
try {
return deviceInterfaceService.selectInspectionList(equOrderVO);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
}

@ -65,6 +65,7 @@ public class DevicePDAController extends BaseController {
//新增手持报修记录
@PostMapping("/addRepairRecord")
public AjaxResult addRepairRecord(@RequestBody EquRepairOrder equRepairOrder) {
// equRepairOrderService.checkEquRepairOrder(equRepairOrder);
return devicePDAService.addRepairRecord(equRepairOrder);
}

@ -582,6 +582,46 @@ public class DevicePDAServiceImpl implements IDevicePDAService {
String key = "#header.poolName";
equRepairOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", ""));
equRepairOrderMapper.insertEquRepairOrder(equRepairOrder);
String code = equRepairOrder.getOrderCode().substring(10);
//审核报修单据,生成维修单
String workCode = DateUtils.dateTimeNow(DateUtils.YYYYMMDD) + code;
EquRepairWorkOrder equRepairWorkOrder = new EquRepairWorkOrder();
equRepairWorkOrder.setWorkId(IdUtils.fastSimpleUUID()); //维修工单id
equRepairWorkOrder.setOrderId(equRepairOrder.getOrderId()); //报修Id
equRepairWorkOrder.setOrderCode(equRepairOrder.getOrderCode()); //报修单号
equRepairWorkOrder.setWorkCode("WX" + workCode); //维修单号
equRepairWorkOrder.setEquipmentCode(equRepairOrder.getEquipmentCode()); //设备编码
equRepairWorkOrder.setWorkTeam(equRepairOrder.getWorkTeam()); //维修组
equRepairWorkOrder.setWorkOutsource("0"); //不委外
equRepairWorkOrder.setOutWorkCode("无"); //无委外工单号
equRepairWorkOrder.setWorkHandle("1"); //是否立即维修 1是 0 否
equRepairWorkOrder.setWorkPlanTime(equRepairOrder.getWorkPlanTime()); //计划维修时间
if (equRepairOrder.getWorkPlanDownTime() != null) { //是否停机维修 停机维修时间
equRepairWorkOrder.setWorkDownMachine("1");
equRepairWorkOrder.setWorkPlanDownTime(equRepairOrder.getWorkPlanDownTime());
} else {
equRepairWorkOrder.setWorkDownMachine("0");
}
equRepairWorkOrder.setWorkFaultDesc(equRepairOrder.getOrderDesc());
equRepairWorkOrder.setWorkStatus("0"); //工单状态 待维修
equRepairWorkOrder.setCreateTime(DateUtils.getNowDate());
equRepairWorkOrder.setCreateBy(SecurityUtils.getUsername());
equRepairWorkOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", ""));
equRepairWorkOrderMapper.insertEquRepairWorkOrder(equRepairWorkOrder);
////审核结果
equRepairOrder.setOrderStatus("1");
////更新设备状态
EquEquipment equEquipment = new EquEquipment();
equEquipment.setEquipmentCode(equRepairOrder.getEquipmentCode());
equEquipment.setEquipmentStatus("0"); //0故障
equRepairWorkOrderMapper.updateEquipmentStatus(equEquipment);
AjaxResult repairSendWeChatResult = repairSendWeChat(equRepairWorkOrder);
//删除照片 不需要清照片 因为是新增
//新增文件
@ -674,6 +714,7 @@ public class DevicePDAServiceImpl implements IDevicePDAService {
}
//发企业微信--------------------结束
}
//自动审核成功生成维修单
return success("新增报修记录成功!");
} catch (Exception e) {
@ -681,6 +722,118 @@ public class DevicePDAServiceImpl implements IDevicePDAService {
}
}
/**
*
*/
public AjaxResult repairSendWeChat(EquRepairWorkOrder equRepairWorkOrder) {
////企业微信维修提醒
//发企业微信--------------------开始(跟班组有关)
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式
SysNoticeGroup noticeQo = new SysNoticeGroup();
noticeQo.setNoticeId(11L); //id写死了
List<SysNoticeGroup> notices = equRepairOrderMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
List<String> userCodes = notices.stream()
.map(SysNoticeGroup::getUserCode)
.collect(Collectors.toList());
for (SysNoticeGroup noticeDto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticeDto.getWxId());
String contentInfo = noticeDto.getNoticeContent();
////判断是立即维修还是计划性维修
String workHandle = "";
if(equRepairWorkOrder.getWorkHandle().equals("1")){
workHandle = "立即维修";
}else{
workHandle = "计划性维修";
}
////判断是否需要停机维修
String workDownMachine = "";
if(equRepairWorkOrder.getWorkDownMachine().equals("1")){
workDownMachine = "停机";
}else{
workDownMachine = "不停机";
}
//在前端填的时候,需要判空!!!!!!
contentInfo = contentInfo
.replace("${message}", "\n")
.replace("${equipmentCode}", equRepairWorkOrder.getEquipmentCode()+"\n")
.replace("${workCode}", equRepairWorkOrder.getWorkCode()+"\n")
.replace("${workHandle}", workHandle+"\n");
//故障描述
if(StringUtils.isNotEmpty(equRepairWorkOrder.getWorkFaultDesc())){
contentInfo = contentInfo.replace("${workFaultDesc}", equRepairWorkOrder.getWorkFaultDesc()+"\n");
}else{
contentInfo = contentInfo.replace("${workFaultDesc}", "无"+"\n");
}
//维修组
if(StringUtils.isNotEmpty(equRepairWorkOrder.getWorkTeam())){
contentInfo = contentInfo.replace("${workTeam}", equRepairWorkOrder.getWorkTeam()+"\n");
}else{
contentInfo = contentInfo.replace("${workTeam}", "无"+"\n");
}
//计划停机维修时间
if(equRepairWorkOrder.getWorkPlanTime() != null){
contentInfo = contentInfo.replace("${workPlanTime}", myFmt.format(equRepairWorkOrder.getWorkPlanTime())+"\n");
}else{
contentInfo = contentInfo.replace("${workPlanTime}", "无"+"\n");
}
//计划停机维修时间
if(equRepairWorkOrder.getWorkPlanDownTime() != null){
contentInfo = contentInfo.replace("${workPlanDownTime}", myFmt.format(equRepairWorkOrder.getWorkPlanDownTime())+"\n");
}else{
contentInfo = contentInfo.replace("${workPlanDownTime}", "无"+"\n");
}
//是否停机
if(StringUtils.isNotEmpty(workDownMachine)){
contentInfo = contentInfo.replace("${workDownMachine}", workDownMachine+"\n");
}else{
contentInfo = contentInfo.replace("${workDownMachine}", "无"+"\n");
}
//查询设备相关信息
//设备名称
EquEquipment equ = equEquipmentMapper.selectEquEquipmentByEquEquipmentCode(equRepairWorkOrder.getEquipmentCode());
if(StringUtils.isNotEmpty(equ.getEquipmentName())){
contentInfo = contentInfo.replace("${equipmentName}", equ.getEquipmentName()+"\n");
}else{
contentInfo = contentInfo.replace("${equipmentName}", "无"+"\n");
}
//设备位置
if(StringUtils.isNotEmpty(equ.getEquipmentLocation())){
contentInfo = contentInfo.replace("${equipmentLocation}", equ.getEquipmentLocation()+"\n");
}else{
contentInfo = contentInfo.replace("${equipmentLocation}", "无"+"\n");
}
//替换标签
Pattern p= Pattern.compile("<[^>]+>");
Matcher m = p.matcher(contentInfo);
contentInfo = m.replaceAll("");
System.out.println(contentInfo);
wechart0.setText(contentInfo);
wecharts.add(wechart0);
}
logger.info("报修审核后企业微信提醒维修请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
new Thread(() -> {
AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts);
logger.info("报修审核后企业微信提醒结果(下一步开始维修):" + JSONObject.toJSONString(wxresult));
}).start();
}
//发企业微信--------------------结束
}
return success("报修审核后,企业微信发送维修信息成功!");
}
/**
* ()
*

@ -261,37 +261,41 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
public void createSpotCheckPlanFunc(String poolName) {
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
/**equ_plan equ_plan_equ**/
EquPlan equPlan = new EquPlan();
equPlan.setPlanType("spotInspection");
List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan);
logger.info("++++++++++++" + poolName + "++++需要点检的++++++++++"+plans);
if(poolName.equals("ds_1000")){
List<EquPlan> producePlans = this.confirmPlanProduceLine(plans,poolName);//日点检 无产线计划 不生成点检工单
logger.info("++++++++++++" + poolName + "++++需要点检的++++++++++"+producePlans);
for (EquPlan plan : producePlans) {
EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan);
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays() || checkHourTask(hasTask, plan)) {
//生成点检计划
int m = this.createOrderPlan(plan);
if (m == 0) {
error("equ_order相关添加失败");
}
}
}
}else{
for (EquPlan plan : plans) {
EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan);
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays() || checkHourTask(hasTask, plan)) {
//生成点检计划
int m = this.createOrderPlan(plan);
if (m == 0) {
error("equ_order相关添加失败");
}
}
}
}
try {
/**equ_plan equ_plan_equ**/
EquPlan equPlan = new EquPlan();
equPlan.setPlanType("spotInspection");
List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan);
logger.info("++++++++++++" + poolName + "++++需要点检的++++++++++"+plans);
if(poolName.equals("ds_1000")){
List<EquPlan> producePlans = this.confirmPlanProduceLine(plans,poolName);//日点检 无产线计划 不生成点检工单
logger.info("++++++++++++" + poolName + "++++需要点检的++++++++++"+producePlans);
for (EquPlan plan : producePlans) {
EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan);
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays() || checkHourTask(hasTask, plan)) {
//生成点检计划
int m = this.createOrderPlan(plan);
if (m == 0) {
error("equ_order相关添加失败");
}
}
}
}else{
for (EquPlan plan : plans) {
EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan);
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays() || checkHourTask(hasTask, plan)) {
//生成点检计划
int m = this.createOrderPlan(plan);
if (m == 0) {
error("equ_order相关添加失败");
}
}
}
}
}finally {
DynamicDataSourceContextHolder.poll();
}
logger.info("++++++++++++" + poolName + "++++点检结束++++++++++");
}
@ -299,47 +303,50 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
public AjaxResult createSpotCheckWorkOrder(com.op.system.api.domain.device.WorkOrderTangentDTO workOrderTangentDTO) {
DynamicDataSourceContextHolder.push(workOrderTangentDTO.getFactoryCode());// 这是数据源的key
logger.info(workOrderTangentDTO.getFactoryCode() + "工厂切线接口传输参数:" + JSONArray.toJSONString(workOrderTangentDTO));
DynamicDataSourceContextHolder.push(workOrderTangentDTO.getFactoryCode());// 这是数据源的key
EquPlan equPlan = new EquPlan();
equPlan.setPlanType("spotInspection");
List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan);//所有的
List<String> changeLineCodeList = workOrderTangentDTO.getAddLineCodes();//切线后的实际传过来的要新增的产线信息
List<EquPlan> addProducePlans = new ArrayList<>();//切线后,真正能生成的生产线 下面的设备的点检计划
List<String> addProduceLine = new ArrayList<>();//真正能生成的切线生产线
try {
EquPlan equPlan = new EquPlan();
equPlan.setPlanType("spotInspection");
List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan);//所有的
List<String> changeLineCodeList = workOrderTangentDTO.getAddLineCodes();//切线后的实际传过来的要新增的产线信息
List<EquPlan> addProducePlans = new ArrayList<>();//切线后,真正能生成的生产线 下面的设备的点检计划
List<String> addProduceLine = new ArrayList<>();//真正能生成的切线生产线
if(!CollectionUtils.isEmpty(changeLineCodeList) && !CollectionUtils.isEmpty(plans)){
for(String lineCode : changeLineCodeList){
for(EquPlan plan : plans){
if(!StringUtils.isBlank(plan.getLineCode())){
if(plan.getLineCode().equals(lineCode)){
addProducePlans.add(plan);
logger.info(workOrderTangentDTO.getFactoryCode() + "工厂切线后新生成计划信息:" + JSONArray.toJSONString(plan));
addProduceLine.add(lineCode);
if(!CollectionUtils.isEmpty(changeLineCodeList) && !CollectionUtils.isEmpty(plans)){
for(String lineCode : changeLineCodeList){
for(EquPlan plan : plans){
if(!StringUtils.isBlank(plan.getLineCode())){
if(plan.getLineCode().equals(lineCode)){
addProducePlans.add(plan);
logger.info(workOrderTangentDTO.getFactoryCode() + "工厂切线后新生成计划信息:" + JSONArray.toJSONString(plan));
addProduceLine.add(lineCode);
}
}
}
}
}
}
addProduceLine = addProduceLine.stream().distinct().collect(Collectors.toList());
logger.info(workOrderTangentDTO.getFactoryCode() + "工厂切线后新生成产线:" + JSONArray.toJSONString(addProduceLine));
addSpotCheckTask = new ArrayList<>();
addProduceLine = addProduceLine.stream().distinct().collect(Collectors.toList());
logger.info(workOrderTangentDTO.getFactoryCode() + "工厂切线后新生成产线:" + JSONArray.toJSONString(addProduceLine));
addSpotCheckTask = new ArrayList<>();
for (EquPlan plan : addProducePlans) {
EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan);
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays() || checkHourTask(hasTask, plan)) {
//生成点检计划
int m = this.createOrderPlan(plan);
if (m == 0) {
error("equ_order相关添加失败");
return error();
}else{
for (EquPlan plan : addProducePlans) {
EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan);
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays() || checkHourTask(hasTask, plan)) {
//生成点检计划
int m = this.createOrderPlan(plan);
if (m == 0) {
error("equ_order相关添加失败");
return error();
}else{
}
}
}
logger.info("++++++++++++" + workOrderTangentDTO.getFactoryCode() + "++++切线后创建微信提醒开始++++++++++");
this.spotCheckSendWeChat(addProduceLine,workOrderTangentDTO);
}finally {
DynamicDataSourceContextHolder.poll();
}
logger.info("++++++++++++" + workOrderTangentDTO.getFactoryCode() + "++++切线后创建微信提醒开始++++++++++");
this.spotCheckSendWeChat(addProduceLine,workOrderTangentDTO);
logger.info("++++++++++++" + workOrderTangentDTO.getFactoryCode() + "++++切线后创建微信提醒结束++++++++++");
logger.info("++++++++++++" + workOrderTangentDTO.getFactoryCode() + "++++切线后创建点检工单流程结束++++++++++");
return success();
@ -393,54 +400,64 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
public void createPatrolCheckPlanFunc(String poolName) {
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
/**equ_plan equ_plan_equ**/
EquPlan equPlan = new EquPlan();
equPlan.setPlanType("inspection");
List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan);
try {
/**equ_plan equ_plan_equ**/
EquPlan equPlan = new EquPlan();
equPlan.setPlanType("inspection");
List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan);
for (EquPlan plan : plans) {
EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan);
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays() || checkHourTask(hasTask, plan)) {
//生成巡检计划
int m = this.createOrderPlan(plan);
if (m == 0) {
error("equ_order相关添加失败");
for (EquPlan plan : plans) {
EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan);
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays() || checkHourTask(hasTask, plan)) {
//生成巡检计划
int m = this.createOrderPlan(plan);
if (m == 0) {
error("equ_order相关添加失败");
}
}
}
}finally {
DynamicDataSourceContextHolder.poll();
}
logger.info("++++++++++++" + poolName + "++++巡检结束++++++++++");
}
public void createMaintenancePlanFunc(String poolName) {
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
/**equ_plan equ_plan_equ**/
EquPlan equPlan = new EquPlan();
equPlan.setPlanType("maintenance");
List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan);
try{
/**equ_plan equ_plan_equ**/
EquPlan equPlan = new EquPlan();
equPlan.setPlanType("maintenance");
List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan);
for (EquPlan plan : plans) {
EquOrder hasTask = null;
if ("1".equals(plan.getCalculationRule())) {
//根据order_start//1按上次保养时间
hasTask = deviceTaskMapper.getNewTaskOrder0(plan);
} else if ("0".equals(plan.getCalculationRule())) {
//根据createTime//0按固定周期
hasTask = deviceTaskMapper.getNewTaskOrder(plan);
} else if ("2".equals(plan.getCalculationRule())) {
//单次生成保养计划
//根据planLoopStart 单次生成
if(plan.getPlanLoopStart().getTime() == DateUtils.getNowDate().getTime()){
hasTask = null;
}
}
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays() || checkHourTask(hasTask, plan)) {
//生成保养计划
int m = this.createOrderPlan(plan);
if (m == 0) {
error("equ_order相关添加失败");
for (EquPlan plan : plans) {
EquOrder hasTask = null;
if ("1".equals(plan.getCalculationRule())) {
//根据order_start//1按上次保养时间
hasTask = deviceTaskMapper.getNewTaskOrder0(plan);
} else if ("0".equals(plan.getCalculationRule())) {
//根据createTime//0按固定周期
hasTask = deviceTaskMapper.getNewTaskOrder(plan);
} else if ("2".equals(plan.getCalculationRule())) {
//单次生成保养计划
//根据planLoopStart 单次生成
if(plan.getPlanLoopStart().getTime() == DateUtils.getNowDate().getTime()){
hasTask = null;
}
}
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays() || checkHourTask(hasTask, plan)) {
//生成保养计划
int m = this.createOrderPlan(plan);
if (m == 0) {
error("equ_order相关添加失败");
}
}
}
}finally {
DynamicDataSourceContextHolder.poll();
}
logger.info("++++++++++++" + poolName + "++++保养结束++++++++++");
}
@ -585,74 +602,84 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
private void createEquipmentOperation(String poolName) {
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
// 当天未生成过运行记录
int checkNum = equOperationMapper.checkInsertOperation();
if (checkNum == 0) {
// 获取字典设备运行时间 device_operation_time
String operationTime = equOperationMapper.selectEquipmentOperationTime();
// 获取所有设备信息(设备编码、设备名称、设备组线、工作中心名称)
List<EquOperation> operationList = equOperationMapper.selectEquipments();
// 统一处理数据
for (EquOperation operation : operationList) {
operation.setId(IdUtils.fastSimpleUUID());// id
operation.setFactoryCode(poolName.replace("ds_", ""));// 工厂
operation.setOperationTime(operationTime);// 运行时间(默认运行时间)
operation.setActualOperationTime(operationTime);// 实际运行时间(默认运行时间)
operation.setCreateBy("job");
operation.setCreateTime(DateUtils.getNowDate());
try {
// 当天未生成过运行记录
int checkNum = equOperationMapper.checkInsertOperation();
if (checkNum == 0) {
// 获取字典设备运行时间 device_operation_time
String operationTime = equOperationMapper.selectEquipmentOperationTime();
// 获取所有设备信息(设备编码、设备名称、设备组线、工作中心名称)
List<EquOperation> operationList = equOperationMapper.selectEquipments();
// 统一处理数据
for (EquOperation operation : operationList) {
operation.setId(IdUtils.fastSimpleUUID());// id
operation.setFactoryCode(poolName.replace("ds_", ""));// 工厂
operation.setOperationTime(operationTime);// 运行时间(默认运行时间)
operation.setActualOperationTime(operationTime);// 实际运行时间(默认运行时间)
operation.setCreateBy("job");
operation.setCreateTime(DateUtils.getNowDate());
}
int batchSize = 100;// 批次数量
// 分批次处理
int batchCount = (operationList.size() + batchSize - 1) / batchSize;// 计算批次数量
for (int i = 0; i < batchCount; i++) {
int startIndex = i * batchSize;// 索引开始值
int endIndex = Math.min((i + 1) * batchSize, operationList.size());// 索引结束值
// 截取列表
List<EquOperation> subList = operationList.subList(startIndex, endIndex);
int num = equOperationMapper.insertEquOperationByBatch(subList);
System.out.println("数据源:" + poolName + "--->" + "第" + (i + 1) + "轮" + "开始索引:" + startIndex + "________结束索引:" + endIndex + "________成功插入数量:" + num);
}
} else {
System.out.println("数据源:" + poolName + "当天生成过运行记录");
}
int batchSize = 100;// 批次数量
// 分批次处理
int batchCount = (operationList.size() + batchSize - 1) / batchSize;// 计算批次数量
for (int i = 0; i < batchCount; i++) {
int startIndex = i * batchSize;// 索引开始值
int endIndex = Math.min((i + 1) * batchSize, operationList.size());// 索引结束值
// 截取列表
List<EquOperation> subList = operationList.subList(startIndex, endIndex);
int num = equOperationMapper.insertEquOperationByBatch(subList);
System.out.println("数据源:" + poolName + "--->" + "第" + (i + 1) + "轮" + "开始索引:" + startIndex + "________结束索引:" + endIndex + "________成功插入数量:" + num);
}
} else {
System.out.println("数据源:" + poolName + "当天生成过运行记录");
}finally {
DynamicDataSourceContextHolder.poll();
}
}
private void backupEquipmentOperation(String poolName) {
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
// 校验当前YEAR-2是否备份过数据
EquOperation check = equOperationMapper.checkBackupOperation();
if (check == null) {
// 获取插入数量
int insertNum = equOperationMapper.getBackupOperationNum();
int insertSize = 100;// 新增批次数量
try {
// 校验当前YEAR-2是否备份过数据
EquOperation check = equOperationMapper.checkBackupOperation();
if (check == null) {
// 获取插入数量
int insertNum = equOperationMapper.getBackupOperationNum();
int insertSize = 100;// 新增批次数量
// 分批次备份
int batchCount = (insertNum + insertSize - 1) / insertSize;// 计算批次数量
for (int i = 0; i < batchCount; i++) {
int startIndex = i * insertSize;// 索引开始值
int endIndex = Math.min((i + 1) * insertSize, insertNum);// 索引结束值
// 分批次备份
int batchCount = (insertNum + insertSize - 1) / insertSize;// 计算批次数量
for (int i = 0; i < batchCount; i++) {
int startIndex = i * insertSize;// 索引开始值
int endIndex = Math.min((i + 1) * insertSize, insertNum);// 索引结束值
// 备份至数据库
int num = equOperationMapper.backupOperation(startIndex, insertSize);
// 备份至数据库
int num = equOperationMapper.backupOperation(startIndex, insertSize);
System.out.println("数据源:" + poolName + "--->" + "第" + (i + 1) + "轮备份" + "开始索引:" + startIndex + "________结束索引:" + endIndex + "________成功插入数量:" + num);
System.out.println("数据源:" + poolName + "--->" + "第" + (i + 1) + "轮备份" + "开始索引:" + startIndex + "________结束索引:" + endIndex + "________成功插入数量:" + num);
}
// 删除源数据库数据
int delSize = 100;// 删除批次数量
for (int i = 0; i < insertNum / delSize + 1; i++) {
// 在源数据库中删除
int num = equOperationMapper.deleteOperation(delSize);
System.out.println("数据源:" + poolName + "--->" + "第" + (i + 1) + "轮删除" + "------>成功删除数量:" + num);
}
} else {
System.out.println("数据源:" + poolName + "---->" + "年份:" + (LocalDate.now().getYear() - 2) + "--->已备份");
}
// 删除源数据库数据
int delSize = 100;// 删除批次数量
for (int i = 0; i < insertNum / delSize + 1; i++) {
// 在源数据库中删除
int num = equOperationMapper.deleteOperation(delSize);
System.out.println("数据源:" + poolName + "--->" + "第" + (i + 1) + "轮删除" + "------>成功删除数量:" + num);
}
} else {
System.out.println("数据源:" + poolName + "---->" + "年份:" + (LocalDate.now().getYear() - 2) + "--->已备份");
}finally {
DynamicDataSourceContextHolder.poll();
}
}
// 循环类型为小时

@ -379,7 +379,6 @@ public class EquRepairOrderServiceImpl implements IEquRepairOrderService {
equEquipment.setEquipmentCode(equRepairOrder.getEquipmentCode());
equEquipment.setEquipmentStatus("0"); //0故障
equRepairWorkOrderMapper.updateEquipmentStatus(equEquipment);
AjaxResult repairSendWeChatResult = repairSendWeChat(equRepairWorkOrder);
}
equRepairOrder.setUpdateTime(DateUtils.getNowDate());

@ -296,6 +296,8 @@ public class RecordAlarmDataServiceImpl implements IRecordAlarmDataService {
}
} catch (Exception e) {
logger.error("service == 水瞬时报警 == exception", e);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@ -396,79 +398,84 @@ public class RecordAlarmDataServiceImpl implements IRecordAlarmDataService {
*/
public void hourLineLossTimingTask(String poolName) {
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
BaseLineLoss baseLineLoss = new BaseLineLoss();
Date nowDate = DateUtils.getNowDate();
Calendar calendar = Calendar.getInstance();
calendar.setTime(nowDate);
calendar.add(Calendar.HOUR_OF_DAY, -1);
Date hourAgoTime = calendar.getTime();
Map<String, Object> lineLossMap = new HashMap<>();
lineLossMap.put("beginCollectTime", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", hourAgoTime));
lineLossMap.put("endCollectTime", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", nowDate));
baseLineLoss.setParams(lineLossMap);
//电告警
baseLineLoss.setMonitorType(2L);
List<Map<String, String>> lineLossList = dataAnalysisService.lineLossAnalysisDataTimedTasks(baseLineLoss);
//电阈值
BaseDnbThreshold baseDnbThreshold = new BaseDnbThreshold();
baseDnbThreshold.setThresholdStatus(0L);
List<BaseDnbThreshold> baseDnbThresholds = baseDnbThresholdMapper.selectBaseDnbThresholdList(baseDnbThreshold);
if (lineLossList.size() > 0) {
for (Map<String, String> map : lineLossList) {
String monitorId = String.valueOf(map.get("monitorId"));
for (BaseDnbThreshold dnbThreshold : baseDnbThresholds) {
if (monitorId.equals(dnbThreshold.getMonitorId())) {
BigDecimal lineLossRate = dnbThreshold.getLineLossRate();
if (StringUtils.isNull(lineLossRate)) {
continue;
}
String substring = String.valueOf(map.get("lossRate"));
BigDecimal lossRate = new BigDecimal(substring);
if (lineLossRate.compareTo(lossRate) < 0) {
RecordAlarmData alarmData = new RecordAlarmData();
alarmData.setMonitorId(monitorId);
alarmData.setCollectTime(new Date());
alarmData.setAlarmType(3L);
alarmData.setAlarmStatus(1L);
alarmData.setAlarmData("超过线损电阈值");
recordAlarmDataMapper.insertRecordAlarmData(alarmData);
try {
BaseLineLoss baseLineLoss = new BaseLineLoss();
Date nowDate = DateUtils.getNowDate();
Calendar calendar = Calendar.getInstance();
calendar.setTime(nowDate);
calendar.add(Calendar.HOUR_OF_DAY, -1);
Date hourAgoTime = calendar.getTime();
Map<String, Object> lineLossMap = new HashMap<>();
lineLossMap.put("beginCollectTime", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", hourAgoTime));
lineLossMap.put("endCollectTime", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", nowDate));
baseLineLoss.setParams(lineLossMap);
//电告警
baseLineLoss.setMonitorType(2L);
List<Map<String, String>> lineLossList = dataAnalysisService.lineLossAnalysisDataTimedTasks(baseLineLoss);
//电阈值
BaseDnbThreshold baseDnbThreshold = new BaseDnbThreshold();
baseDnbThreshold.setThresholdStatus(0L);
List<BaseDnbThreshold> baseDnbThresholds = baseDnbThresholdMapper.selectBaseDnbThresholdList(baseDnbThreshold);
if (lineLossList.size() > 0) {
for (Map<String, String> map : lineLossList) {
String monitorId = String.valueOf(map.get("monitorId"));
for (BaseDnbThreshold dnbThreshold : baseDnbThresholds) {
if (monitorId.equals(dnbThreshold.getMonitorId())) {
BigDecimal lineLossRate = dnbThreshold.getLineLossRate();
if (StringUtils.isNull(lineLossRate)) {
continue;
}
String substring = String.valueOf(map.get("lossRate"));
BigDecimal lossRate = new BigDecimal(substring);
if (lineLossRate.compareTo(lossRate) < 0) {
RecordAlarmData alarmData = new RecordAlarmData();
alarmData.setMonitorId(monitorId);
alarmData.setCollectTime(new Date());
alarmData.setAlarmType(3L);
alarmData.setAlarmStatus(1L);
alarmData.setAlarmData("超过线损电阈值");
recordAlarmDataMapper.insertRecordAlarmData(alarmData);
}
}
}
}
}
//水线损
baseLineLoss.setMonitorType(3L);
List<Map<String, String>> waterLossList = dataAnalysisService.lineLossAnalysisDataTimedTasks(baseLineLoss);
//水阈值
BaseWaterThreshold baseWaterThreshold = new BaseWaterThreshold();
baseWaterThreshold.setThresholdStatus(0L);
List<BaseWaterThreshold> baseWaterThresholds = baseWaterThresholdMapper.selectBaseWaterThresholdList(baseWaterThreshold);
if (waterLossList.size() > 0) {
for (Map<String, String> map : waterLossList) {
String monitorId = String.valueOf(map.get("monitorId"));
for (BaseWaterThreshold waterThreshold : baseWaterThresholds) {
if (monitorId.equals(waterThreshold.getMonitorId())) {
BigDecimal lineLossRate = waterThreshold.getLineLossRate();
if (StringUtils.isNull(lineLossRate)) {
continue;
}
String substring = String.valueOf(map.get("lossRate"));
BigDecimal lossRate = new BigDecimal(substring);
if (lineLossRate.compareTo(lossRate) < 0) {
RecordAlarmData alarmData = new RecordAlarmData();
alarmData.setMonitorId(monitorId);
alarmData.setCollectTime(new Date());
alarmData.setAlarmType(3L);
alarmData.setAlarmStatus(1L);
alarmData.setAlarmData("超过线损水阈值");
recordAlarmDataMapper.insertRecordAlarmData(alarmData);
}
}
}
}
}
}finally {
DynamicDataSourceContextHolder.poll();
}
//水线损
baseLineLoss.setMonitorType(3L);
List<Map<String, String>> waterLossList = dataAnalysisService.lineLossAnalysisDataTimedTasks(baseLineLoss);
//水阈值
BaseWaterThreshold baseWaterThreshold = new BaseWaterThreshold();
baseWaterThreshold.setThresholdStatus(0L);
List<BaseWaterThreshold> baseWaterThresholds = baseWaterThresholdMapper.selectBaseWaterThresholdList(baseWaterThreshold);
if (waterLossList.size() > 0) {
for (Map<String, String> map : waterLossList) {
String monitorId = String.valueOf(map.get("monitorId"));
for (BaseWaterThreshold waterThreshold : baseWaterThresholds) {
if (monitorId.equals(waterThreshold.getMonitorId())) {
BigDecimal lineLossRate = waterThreshold.getLineLossRate();
if (StringUtils.isNull(lineLossRate)) {
continue;
}
String substring = String.valueOf(map.get("lossRate"));
BigDecimal lossRate = new BigDecimal(substring);
if (lineLossRate.compareTo(lossRate) < 0) {
RecordAlarmData alarmData = new RecordAlarmData();
alarmData.setMonitorId(monitorId);
alarmData.setCollectTime(new Date());
alarmData.setAlarmType(3L);
alarmData.setAlarmStatus(1L);
alarmData.setAlarmData("超过线损水阈值");
recordAlarmDataMapper.insertRecordAlarmData(alarmData);
}
}
}
}
}
}
/**
@ -505,69 +512,74 @@ public class RecordAlarmDataServiceImpl implements IRecordAlarmDataService {
*/
public void dailyConsumptionTimingTask(String poolName) {
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
HashMap<String, Object> map = new HashMap<>();
map.put("timeSub", null);
Date today = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String yesterday = simpleDateFormat.format(today);//获取昨天日期
map.put("startDay", yesterday);
map.put("endDay", yesterday);
try {
HashMap<String, Object> map = new HashMap<>();
map.put("timeSub", null);
Date today = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String yesterday = simpleDateFormat.format(today);//获取昨天日期
map.put("startDay", yesterday);
map.put("endDay", yesterday);
//电阈值
BaseDnbThreshold baseDnbThreshold = new BaseDnbThreshold();
baseDnbThreshold.setThresholdStatus(0L);
List<BaseDnbThreshold> baseDnbThresholds = baseDnbThresholdMapper.selectBaseDnbThresholdList(baseDnbThreshold);
if (baseDnbThresholds.size() > 0) {
for (BaseDnbThreshold dnbThreshold : baseDnbThresholds) {
if (StringUtils.isNull(dnbThreshold.getDayConsumption())) {
continue;
}
map.put("energyType", 2L);
map.put("monitorId", dnbThreshold.getMonitorId());
List<Map<String, String>> dnbConsumptionList = dataAnalysisService.energyConsumptionByTime(map);
if (dnbConsumptionList.size() == 0) {
continue;
}
BigDecimal expend = new BigDecimal(String.valueOf(dnbConsumptionList.get(0).get("expend")));
if (expend.compareTo(dnbThreshold.getDayConsumption()) > 0) {
RecordAlarmData alarmData = new RecordAlarmData();
alarmData.setMonitorId(dnbThreshold.getMonitorId());
alarmData.setCollectTime(new Date());
alarmData.setAlarmType(4L);
alarmData.setAlarmStatus(1L);
alarmData.setAlarmData("超过日耗量电阈值");
recordAlarmDataMapper.insertRecordAlarmData(alarmData);
//电阈值
BaseDnbThreshold baseDnbThreshold = new BaseDnbThreshold();
baseDnbThreshold.setThresholdStatus(0L);
List<BaseDnbThreshold> baseDnbThresholds = baseDnbThresholdMapper.selectBaseDnbThresholdList(baseDnbThreshold);
if (baseDnbThresholds.size() > 0) {
for (BaseDnbThreshold dnbThreshold : baseDnbThresholds) {
if (StringUtils.isNull(dnbThreshold.getDayConsumption())) {
continue;
}
map.put("energyType", 2L);
map.put("monitorId", dnbThreshold.getMonitorId());
List<Map<String, String>> dnbConsumptionList = dataAnalysisService.energyConsumptionByTime(map);
if (dnbConsumptionList.size() == 0) {
continue;
}
BigDecimal expend = new BigDecimal(String.valueOf(dnbConsumptionList.get(0).get("expend")));
if (expend.compareTo(dnbThreshold.getDayConsumption()) > 0) {
RecordAlarmData alarmData = new RecordAlarmData();
alarmData.setMonitorId(dnbThreshold.getMonitorId());
alarmData.setCollectTime(new Date());
alarmData.setAlarmType(4L);
alarmData.setAlarmStatus(1L);
alarmData.setAlarmData("超过日耗量电阈值");
recordAlarmDataMapper.insertRecordAlarmData(alarmData);
}
}
}
}
//水阈值
BaseWaterThreshold baseWaterThreshold = new BaseWaterThreshold();
baseDnbThreshold.setThresholdStatus(0L);
List<BaseWaterThreshold> baseWaterThresholds = baseWaterThresholdMapper.selectBaseWaterThresholdList(baseWaterThreshold);
if (baseWaterThresholds.size() > 0) {
for (BaseWaterThreshold waterThreshold : baseWaterThresholds) {
if (StringUtils.isNull(waterThreshold.getDayConsumption())) {
continue;
}
map.put("energyType", 3L);
map.put("monitorId", waterThreshold.getMonitorId());
List<Map<String, String>> dnbConsumptionList = dataAnalysisService.energyConsumptionByTime(map);
if (dnbConsumptionList.size() == 0) {
continue;
}
BigDecimal expend = new BigDecimal(String.valueOf(dnbConsumptionList.get(0).get("expend")));
if (expend.compareTo(waterThreshold.getDayConsumption()) > 0) {
RecordAlarmData alarmData = new RecordAlarmData();
alarmData.setMonitorId(waterThreshold.getMonitorId());
alarmData.setCollectTime(new Date());
alarmData.setAlarmType(4L);
alarmData.setAlarmStatus(1L);
alarmData.setAlarmData("超过日耗量水阈值");
recordAlarmDataMapper.insertRecordAlarmData(alarmData);
//水阈值
BaseWaterThreshold baseWaterThreshold = new BaseWaterThreshold();
baseDnbThreshold.setThresholdStatus(0L);
List<BaseWaterThreshold> baseWaterThresholds = baseWaterThresholdMapper.selectBaseWaterThresholdList(baseWaterThreshold);
if (baseWaterThresholds.size() > 0) {
for (BaseWaterThreshold waterThreshold : baseWaterThresholds) {
if (StringUtils.isNull(waterThreshold.getDayConsumption())) {
continue;
}
map.put("energyType", 3L);
map.put("monitorId", waterThreshold.getMonitorId());
List<Map<String, String>> dnbConsumptionList = dataAnalysisService.energyConsumptionByTime(map);
if (dnbConsumptionList.size() == 0) {
continue;
}
BigDecimal expend = new BigDecimal(String.valueOf(dnbConsumptionList.get(0).get("expend")));
if (expend.compareTo(waterThreshold.getDayConsumption()) > 0) {
RecordAlarmData alarmData = new RecordAlarmData();
alarmData.setMonitorId(waterThreshold.getMonitorId());
alarmData.setCollectTime(new Date());
alarmData.setAlarmType(4L);
alarmData.setAlarmStatus(1L);
alarmData.setAlarmData("超过日耗量水阈值");
recordAlarmDataMapper.insertRecordAlarmData(alarmData);
}
}
}
}finally {
DynamicDataSourceContextHolder.poll();
}
}

@ -39,18 +39,27 @@ public class PDAServiceImpl implements PDAService {
@Override
public List<BaseEquipmentDto> getAllEquipments(BaseEquipmentDto baseEquipmentDto) {
DynamicDataSourceContextHolder.push("ds_" + baseEquipmentDto.getFactoryCode());
return mesMapper.getAllEquipments(baseEquipmentDto);
try {
return mesMapper.getAllEquipments(baseEquipmentDto);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
public int saveRfidWithEquip(BaseEquipmentDto baseEquipmentDto) {
DynamicDataSourceContextHolder.push("ds_" + baseEquipmentDto.getFactoryCode());
baseEquipmentDto.setRecordId(IdUtils.fastSimpleUUID());
baseEquipmentDto.setCreateBy(SecurityUtils.getUsername());
baseEquipmentDto.setCreateTime(DateUtils.getNowDate());
baseEquipmentDto.setRfid(baseEquipmentDto.getRfidNo());
baseEquipmentDto.setNextMachineCode(baseEquipmentDto.getEquipmentCode());
return mesMapper.saveRfidWithEquip(baseEquipmentDto);
try {
baseEquipmentDto.setRecordId(IdUtils.fastSimpleUUID());
baseEquipmentDto.setCreateBy(SecurityUtils.getUsername());
baseEquipmentDto.setCreateTime(DateUtils.getNowDate());
baseEquipmentDto.setRfid(baseEquipmentDto.getRfidNo());
baseEquipmentDto.setNextMachineCode(baseEquipmentDto.getEquipmentCode());
return mesMapper.saveRfidWithEquip(baseEquipmentDto);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
}

@ -1,5 +1,7 @@
package com.op.open.mapper;
import com.op.device.domain.EquEquipment;
import com.op.device.domain.EquRepairWorkOrder;
import com.op.system.api.domain.SysNoticeGroup;
import com.op.system.api.domain.SysSapLog;
import com.op.system.api.domain.device.DeviceRepairOrder;
@ -99,6 +101,12 @@ public interface OpenMapper {
int addProductNoBatchs(@Param("list")List<BaseProductDTO> everyList);
String getProductGroup(String materialCode);
void insertEquRepairWorkOrders(EquRepairWorkOrder equRepairWorkOrder);
void updateEquipmentStatuss(EquEquipment equEquipment);
EquEquipment selectEquEquipmentByEquEquipmentCode(String equipmentCode);
//
// int updateEquBatchs(@Param("list") List<EquEquipmentDTO> updates);
//

@ -13,8 +13,14 @@ import com.op.common.core.utils.http.HttpUtils;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.common.core.web.domain.AjaxResult;
import com.op.common.security.utils.SecurityUtils;
import com.op.device.domain.EquEquipment;
import com.op.device.domain.EquRepairWorkOrder;
import com.op.device.mapper.EquEquipmentMapper;
import com.op.device.mapper.EquRepairOrderMapper;
import com.op.device.mapper.EquRepairWorkOrderMapper;
import com.op.open.mapper.OpenMapper;
import com.op.open.service.OpenService;
import com.op.system.api.RemoteDeviceService;
import com.op.system.api.RemoteOpenService;
import com.op.system.api.domain.SysNoticeGroup;
import com.op.system.api.domain.device.DeviceRepairOrder;
@ -88,6 +94,17 @@ public class OpenServiceImpl implements OpenService {
@Autowired
private OpenMapper openMapper;
@Autowired
private EquRepairOrderMapper equRepairOrderMapper;
@Autowired
private EquEquipmentMapper equEquipmentMapper;
@Autowired
private RemoteOpenService remoteOpenService;
private static Pattern p2= Pattern.compile("<[^>]+>");
/**
@ -191,6 +208,8 @@ public class OpenServiceImpl implements OpenService {
} catch (Exception e) {
dto.setCode("1");
dto.setMessage("MES管理系统接口调用失败");
}finally {
DynamicDataSourceContextHolder.poll();
}
return dto;
}
@ -279,7 +298,12 @@ public class OpenServiceImpl implements OpenService {
@Override
public List<WCSDTO> getLGInfo(WCSDTO wcsDTO) {
DynamicDataSourceContextHolder.push("ds_" + wcsDTO.getFactory());// 这是数据源的key
return openMapper.getLGInfo(wcsDTO);
try {
return openMapper.getLGInfo(wcsDTO);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
@ -289,39 +313,169 @@ public class OpenServiceImpl implements OpenService {
}
DynamicDataSourceContextHolder.push("ds_" + equRepairOrderDTO.getFactory()); // 这是数据源的key
////创建报修单
DeviceRepairOrder equRepairOrder = new DeviceRepairOrder();
String serialNum = String.format("%03d", openMapper.selectOrderCodeSerialNumber()); // 获取故障报修流水号
if (equRepairOrderDTO.getEquipmentCode() == null) {
return error("设备信息不可为空!");
}
equRepairOrder.setOrderCode("BX" + DateUtils.dateTimeNow(DateUtils.YYYYMMDD) + equRepairOrderDTO.getEquipmentCode() + serialNum);// 报修单号
equRepairOrder.setOrderId(IdUtils.fastSimpleUUID()); // id
equRepairOrder.setEquipmentCode(equRepairOrderDTO.getEquipmentCode());
equRepairOrder.setOrderSource("上位机"); // 故障来源
equRepairOrder.setOrderDesc(equRepairOrderDTO.getOrderDesc()); //故障描述 新增加的
equRepairOrder.setOrderTime(DateUtils.getNowDate()); // 报修时间
equRepairOrder.setOrderBreakdownTime(DateUtils.getNowDate()); // 故障时间
if (equRepairOrderDTO.getUserName() != null) {
equRepairOrder.setOrderRepairmanCode(equRepairOrderDTO.getUserName()); // 用户账号
}
if (equRepairOrderDTO.getUserNickName() != null) {
equRepairOrder.setOrderRepairmanName(equRepairOrderDTO.getUserNickName()); // 用户名称
}
equRepairOrder.setCreateTime(DateUtils.getNowDate());
equRepairOrder.setCreateBy(equRepairOrderDTO.getUserName());
equRepairOrder.setOrderStatus("1"); // 报修单状态
equRepairOrder.setFactoryCode(equRepairOrderDTO.getFactory()); // 工厂
if (equRepairOrderDTO.getPhoneNumber() != null) {
equRepairOrder.setOrderConnection(equRepairOrderDTO.getPhoneNumber()); // 联系方式
}
openMapper.insertEquRepairOrder(equRepairOrder);
try {
////创建报修单
DeviceRepairOrder equRepairOrder = new DeviceRepairOrder();
String serialNum = String.format("%03d", openMapper.selectOrderCodeSerialNumber()); // 获取故障报修流水号
if (equRepairOrderDTO.getEquipmentCode() == null) {
return error("设备信息不可为空!");
}
equRepairOrder.setOrderCode("BX" + DateUtils.dateTimeNow(DateUtils.YYYYMMDD) + equRepairOrderDTO.getEquipmentCode() + serialNum);// 报修单号
equRepairOrder.setOrderId(IdUtils.fastSimpleUUID()); // id
equRepairOrder.setEquipmentCode(equRepairOrderDTO.getEquipmentCode());
equRepairOrder.setOrderSource("上位机"); // 故障来源
equRepairOrder.setOrderDesc(equRepairOrderDTO.getOrderDesc()); //故障描述 新增加的
equRepairOrder.setOrderTime(DateUtils.getNowDate()); // 报修时间
equRepairOrder.setOrderBreakdownTime(DateUtils.getNowDate()); // 故障时间
if (equRepairOrderDTO.getUserName() != null) {
equRepairOrder.setOrderRepairmanCode(equRepairOrderDTO.getUserName()); // 用户账号
}
if (equRepairOrderDTO.getUserNickName() != null) {
equRepairOrder.setOrderRepairmanName(equRepairOrderDTO.getUserNickName()); // 用户名称
}
equRepairOrder.setCreateTime(DateUtils.getNowDate());
equRepairOrder.setCreateBy(equRepairOrderDTO.getUserName());
equRepairOrder.setOrderStatus("1"); // 报修单状态
equRepairOrder.setFactoryCode(equRepairOrderDTO.getFactory()); // 工厂
if (equRepairOrderDTO.getPhoneNumber() != null) {
equRepairOrder.setOrderConnection(equRepairOrderDTO.getPhoneNumber()); // 联系方式
}
equRepairOrder.setRepairDestination("立即维修");
openMapper.insertEquRepairOrder(equRepairOrder);
//自动审核生成维修单
String code = equRepairOrder.getOrderCode().substring(10);
String workCode = DateUtils.dateTimeNow(DateUtils.YYYYMMDD) + code;
EquRepairWorkOrder equRepairWorkOrder = new EquRepairWorkOrder();
equRepairWorkOrder.setWorkId(IdUtils.fastSimpleUUID()); //维修工单id
equRepairWorkOrder.setOrderId(equRepairOrder.getOrderId()); //报修Id
equRepairWorkOrder.setOrderCode(equRepairOrder.getOrderCode()); //报修单号
equRepairWorkOrder.setWorkCode("WX" + workCode); //维修单号
equRepairWorkOrder.setEquipmentCode(equRepairOrder.getEquipmentCode()); //设备编码
equRepairWorkOrder.setWorkTeam(equRepairOrder.getWorkTeam()); //维修组
equRepairWorkOrder.setWorkOutsource("0"); //不委外
equRepairWorkOrder.setOutWorkCode("无"); //无委外工单号
equRepairWorkOrder.setWorkHandle("1"); //是否立即维修 1是 0 否
equRepairWorkOrder.setWorkPlanTime(equRepairOrder.getWorkPlanTime()); //计划维修时间
equRepairWorkOrder.setWorkPlanDownTime(DateUtils.getNowDate());
if (equRepairOrder.getWorkPlanDownTime() != null) { //是否停机维修 停机维修时间
equRepairWorkOrder.setWorkDownMachine("1");
equRepairWorkOrder.setWorkPlanDownTime(equRepairOrder.getWorkPlanDownTime());
} else {
equRepairWorkOrder.setWorkDownMachine("0");
}
////发企业微信--------------------开始(跟班组有关)
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式
equRepairWorkOrder.setWorkFaultDesc(equRepairOrder.getOrderDesc());
equRepairWorkOrder.setWorkStatus("0"); //工单状态 待维修
equRepairWorkOrder.setCreateTime(DateUtils.getNowDate());
equRepairWorkOrder.setCreateBy(SecurityUtils.getUsername());
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String key = "#header.poolName";
equRepairWorkOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", ""));
openMapper.insertEquRepairWorkOrders(equRepairWorkOrder);
////审核结果
equRepairOrder.setOrderStatus("1");
////更新设备状态
EquEquipment equEquipment = new EquEquipment();
equEquipment.setEquipmentCode(equRepairOrder.getEquipmentCode());
equEquipment.setEquipmentStatus("0"); //0故障
openMapper.updateEquipmentStatuss(equEquipment);
AjaxResult repairSendWeChatResult = repairSendWeChat(equRepairWorkOrder);
////发企业微信--------------------开始(跟班组有关)
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式
SysNoticeGroup noticeQo = new SysNoticeGroup();
//id写死了
noticeQo.setNoticeId(10L);
List<SysNoticeGroup> notices = openMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
List<String> userCodes = notices.stream()
.map(SysNoticeGroup::getUserCode)
.collect(Collectors.toList());
for (SysNoticeGroup noticeDto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticeDto.getWxId());
String contentInfo = noticeDto.getNoticeContent();
//设备编码
contentInfo = contentInfo
.replace("${message}", "\n")
.replace("${equipmentCode}", equRepairOrder.getEquipmentCode()+"\n")
.replace("${orderCode}", equRepairOrder.getOrderCode()+"\n");
//故障时间
if(equRepairOrder.getOrderBreakdownTime() != null){
contentInfo = contentInfo.replace("${orderBreakdownTime}", myFmt.format(equRepairOrder.getOrderBreakdownTime())+"\n");
}else{
contentInfo = contentInfo.replace("${orderBreakdownTime}", "无"+"\n");
}
//故障原因
if(StringUtils.isNotEmpty(equRepairOrder.getOrderDesc())){
contentInfo = contentInfo.replace("${orderDesc}", equRepairOrder.getOrderDesc()+"\n");
}else{
contentInfo = contentInfo.replace("${orderDesc}", "无"+"\n");
}
//报修人名字
if(StringUtils.isNotEmpty(equRepairOrder.getOrderRepairmanName())){
contentInfo = contentInfo.replace("${orderRepairmanName}", equRepairOrder.getOrderRepairmanName()+"\n");
}else{
contentInfo = contentInfo.replace("${orderRepairmanName}", "无"+"\n");
}
//查询设备相关信息
EquEquipmentDTO equ = openMapper.selectEquipmentDetailByEquipmentCode(equRepairOrder.getEquipmentCode());
if(StringUtils.isNotEmpty(equ.getEquipmentName())){
contentInfo = contentInfo.replace("${equipmentName}", equ.getEquipmentName()+"\n");
}else{
contentInfo = contentInfo.replace("${equipmentName}", "无"+"\n");
}
//设备位置
if(StringUtils.isNotEmpty(equ.getEquipmentLocation())){
contentInfo = contentInfo.replace("${equipmentLocation}", equ.getEquipmentLocation()+"\n");
}else{
contentInfo = contentInfo.replace("${equipmentLocation}", "无"+"\n");
}
//替换掉<p>标签
Pattern p= Pattern.compile("<[^>]+>");
Matcher m = p.matcher(contentInfo);
contentInfo = m.replaceAll("");
System.out.println(contentInfo);
wechart0.setText(contentInfo);
wecharts.add(wechart0);
}
logger.info("上位机报修企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
new Thread(() -> {
AjaxResult wxresult = this.sendWeChartMessage(wecharts);
logger.info("上位机报修企业微信提醒结果:" + JSONObject.toJSONString(wxresult));
}).start();
}
//发企业微信--------------------结束
}
}finally {
DynamicDataSourceContextHolder.poll();
}
return success();
}
/**
*
*/
public AjaxResult repairSendWeChat(EquRepairWorkOrder equRepairWorkOrder) {
////企业微信维修提醒
//发企业微信--------------------开始(跟班组有关)
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式
SysNoticeGroup noticeQo = new SysNoticeGroup();
//id写死了
noticeQo.setNoticeId(10L);
noticeQo.setNoticeId(11L); //id写死了
List<SysNoticeGroup> notices = openMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
@ -332,48 +486,78 @@ public class OpenServiceImpl implements OpenService {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticeDto.getWxId());
String contentInfo = noticeDto.getNoticeContent();
//设备编码
////判断是立即维修还是计划性维修
String workHandle = "";
if(equRepairWorkOrder.getWorkHandle().equals("1")){
workHandle = "立即维修";
}else{
workHandle = "计划性维修";
}
////判断是否需要停机维修
String workDownMachine = "";
if(equRepairWorkOrder.getWorkDownMachine().equals("1")){
workDownMachine = "停机";
}else{
workDownMachine = "不停机";
}
//在前端填的时候,需要判空!!!!!!
contentInfo = contentInfo
.replace("${message}", "\n")
.replace("${equipmentCode}", equRepairOrder.getEquipmentCode()+"\n")
.replace("${orderCode}", equRepairOrder.getOrderCode()+"\n");
//故障时间
if(equRepairOrder.getOrderBreakdownTime() != null){
contentInfo = contentInfo.replace("${orderBreakdownTime}", myFmt.format(equRepairOrder.getOrderBreakdownTime())+"\n");
.replace("${equipmentCode}", equRepairWorkOrder.getEquipmentCode()+"\n")
.replace("${workCode}", equRepairWorkOrder.getWorkCode()+"\n")
.replace("${workHandle}", workHandle+"\n");
//故障描述
if(com.op.common.core.utils.StringUtils.isNotEmpty(equRepairWorkOrder.getWorkFaultDesc())){
contentInfo = contentInfo.replace("${workFaultDesc}", equRepairWorkOrder.getWorkFaultDesc()+"\n");
}else{
contentInfo = contentInfo.replace("${orderBreakdownTime}", "无"+"\n");
contentInfo = contentInfo.replace("${workFaultDesc}", "无"+"\n");
}
//故障原因
if(StringUtils.isNotEmpty(equRepairOrder.getOrderDesc())){
contentInfo = contentInfo.replace("${orderDesc}", equRepairOrder.getOrderDesc()+"\n");
//维修组
if(com.op.common.core.utils.StringUtils.isNotEmpty(equRepairWorkOrder.getWorkTeam())){
contentInfo = contentInfo.replace("${workTeam}", equRepairWorkOrder.getWorkTeam()+"\n");
}else{
contentInfo = contentInfo.replace("${orderDesc}", "无"+"\n");
contentInfo = contentInfo.replace("${workTeam}", "无"+"\n");
}
//报修人名字
if(StringUtils.isNotEmpty(equRepairOrder.getOrderRepairmanName())){
contentInfo = contentInfo.replace("${orderRepairmanName}", equRepairOrder.getOrderRepairmanName()+"\n");
//计划停机维修时间
if(equRepairWorkOrder.getWorkPlanTime() != null){
contentInfo = contentInfo.replace("${workPlanTime}", myFmt.format(equRepairWorkOrder.getWorkPlanTime())+"\n");
}else{
contentInfo = contentInfo.replace("${orderRepairmanName}", "无"+"\n");
contentInfo = contentInfo.replace("${workPlanTime}", "无"+"\n");
}
//计划停机维修时间
if(equRepairWorkOrder.getWorkPlanDownTime() != null){
contentInfo = contentInfo.replace("${workPlanDownTime}", myFmt.format(equRepairWorkOrder.getWorkPlanDownTime())+"\n");
}else{
contentInfo = contentInfo.replace("${workPlanDownTime}", "无"+"\n");
}
//是否停机
if(com.op.common.core.utils.StringUtils.isNotEmpty(workDownMachine)){
contentInfo = contentInfo.replace("${workDownMachine}", workDownMachine+"\n");
}else{
contentInfo = contentInfo.replace("${workDownMachine}", "无"+"\n");
}
//查询设备相关信息
EquEquipmentDTO equ = openMapper.selectEquipmentDetailByEquipmentCode(equRepairOrder.getEquipmentCode());
if(StringUtils.isNotEmpty(equ.getEquipmentName())){
//设备名称
EquEquipment equ = openMapper.selectEquEquipmentByEquEquipmentCode(equRepairWorkOrder.getEquipmentCode());
if(com.op.common.core.utils.StringUtils.isNotEmpty(equ.getEquipmentName())){
contentInfo = contentInfo.replace("${equipmentName}", equ.getEquipmentName()+"\n");
}else{
contentInfo = contentInfo.replace("${equipmentName}", "无"+"\n");
}
//设备位置
if(StringUtils.isNotEmpty(equ.getEquipmentLocation())){
if(com.op.common.core.utils.StringUtils.isNotEmpty(equ.getEquipmentLocation())){
contentInfo = contentInfo.replace("${equipmentLocation}", equ.getEquipmentLocation()+"\n");
}else{
contentInfo = contentInfo.replace("${equipmentLocation}", "无"+"\n");
}
//替换掉<p>标签
//替换标签
Pattern p= Pattern.compile("<[^>]+>");
Matcher m = p.matcher(contentInfo);
contentInfo = m.replaceAll("");
@ -382,153 +566,157 @@ public class OpenServiceImpl implements OpenService {
wechart0.setText(contentInfo);
wecharts.add(wechart0);
}
logger.info("上位机报修企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
logger.info("报修审核后企业微信提醒维修请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
new Thread(() -> {
AjaxResult wxresult = this.sendWeChartMessage(wecharts);
logger.info("上位机报修企业微信提醒结果:" + JSONObject.toJSONString(wxresult));
AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts);
logger.info("报修审核后企业微信提醒结果(下一步开始维修):" + JSONObject.toJSONString(wxresult));
}).start();
}
//发企业微信--------------------结束
}
return success();
return success("报修审核后,企业微信发送维修信息成功!");
}
/**首检 批次成品**/
@Override
public int insertQcCheckTaskProduce(QcCheckTaskProduceDTO qcCheckTaskProduce) {
DynamicDataSourceContextHolder.push("ds_" + qcCheckTaskProduce.getFactoryCode());
logger.info("创建检验任务"+qcCheckTaskProduce.getCheckType()+":"+JSONObject.toJSONString(qcCheckTaskProduce));
// 同一个工单同一个批次,上个检验没完成,下一个不允许执行
String lastStatus = openMapper.getLastTask(qcCheckTaskProduce);
if(StringUtils.isNotBlank(lastStatus) && !"2".equals(lastStatus)){
//logger.info("【重复创建任务】orderNo:"+qcCheckTaskProduce.getOrderNo()+";"+"incomeBatchNo:"+qcCheckTaskProduce.getIncomeBatchNo());
logger.info("【重复创建任务】"+JSONObject.toJSONString(qcCheckTaskProduce));
return -100;
}
qcCheckTaskProduce.setCreateTime(DateUtils.getNowDate());
String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
int liushuiNum = openMapper.getTodayMaxNum(qcCheckTaskProduce);
String liushuiStr = String.format("%04d", liushuiNum);
String createBy = SecurityUtils.getUsername();
Date nowDate = DateUtils.getNowDate();
//获取当前所选工厂
String factoryCode = qcCheckTaskProduce.getFactoryCode();
String beLongId = IdUtils.fastSimpleUUID();
qcCheckTaskProduce.setCheckNo(bpDD + liushuiStr);
/**取检测项**/
QcCheckTypeProjectDTO qctp = new QcCheckTypeProjectDTO();
qctp.setTypeId(qcCheckTaskProduce.getCheckType());//生产过程检验
qctp.setMaterialCode(qcCheckTaskProduce.getMaterialCode());//特性
/**qc_user_material取默认检查人**/
List<QcUserMaterialDTO> users = openMapper.getCheckUserBelongLine(qcCheckTaskProduce);
if (CollectionUtils.isEmpty(users)) {
users = openMapper.getCheckUsers(qcCheckTaskProduce.getCheckType());
}
for (QcUserMaterialDTO user : users) {
user.setId(IdUtils.fastSimpleUUID());
user.setBelongTo(beLongId);
user.setCheckNo(qcCheckTaskProduce.getCheckNo());
user.setCreateBy(createBy);
user.setFactoryCode(factoryCode);
user.setCreateTime(nowDate);
}
/**qc_check_task_user**/
int m = openMapper.addCheckUsers(users);
logger.info(qcCheckTaskProduce.getOrderNo()+":检查人新增" + m + "成功");
/**qc_check_type_project**///个性
List<QcCheckTaskDetailDTO> items = openMapper.getTPByTypeMaterial(qctp);
/**qc_material_group_detail**/
QcMaterialGroupDetailDTO group = openMapper.getGroupByMaterial(qcCheckTaskProduce.getMaterialCode());
if (group == null) {
group = new QcMaterialGroupDetailDTO();
String initGroup = openMapper.getProductGroup(qcCheckTaskProduce.getMaterialCode());
if(initGroup != null){//包材共性
group.setGroupId(initGroup);
}else {//成品蚊香物料组
group.setGroupId("3dc0655fea3449c59c76a01cc5b91565");
try {
logger.info("创建检验任务"+qcCheckTaskProduce.getCheckType()+":"+JSONObject.toJSONString(qcCheckTaskProduce));
// 同一个工单同一个批次,上个检验没完成,下一个不允许执行
String lastStatus = openMapper.getLastTask(qcCheckTaskProduce);
if(StringUtils.isNotBlank(lastStatus) && !"2".equals(lastStatus)){
//logger.info("【重复创建任务】orderNo:"+qcCheckTaskProduce.getOrderNo()+";"+"incomeBatchNo:"+qcCheckTaskProduce.getIncomeBatchNo());
logger.info("【重复创建任务】"+JSONObject.toJSONString(qcCheckTaskProduce));
return -100;
}
}
qctp.setGroupId(group.getGroupId());//共性
List<QcCheckTaskDetailDTO> itemsGG = openMapper.getTPByTypeGroup(qctp);
items.addAll(itemsGG);
/**qc_check_task_detail**/
if (CollectionUtils.isEmpty(items)) {
return 0;//没有找到检测项目
}
qcCheckTaskProduce.setCreateTime(DateUtils.getNowDate());
/**qc_check_task**/
qcCheckTaskProduce.setRecordId(beLongId);
qcCheckTaskProduce.setFactoryCode(factoryCode);
qcCheckTaskProduce.setCreateTime(nowDate);
if(StringUtils.isNotBlank(qcCheckTaskProduce.getTypeCode())){
qcCheckTaskProduce.setTypeCode(qcCheckTaskProduce.getTypeCode());//大检验节点
}else{
qcCheckTaskProduce.setTypeCode("produce");//大检验节点
}
String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
int liushuiNum = openMapper.getTodayMaxNum(qcCheckTaskProduce);
String liushuiStr = String.format("%04d", liushuiNum);
qcCheckTaskProduce.setIncomeTime(DateUtils.getNowDate());
qcCheckTaskProduce.setSupplierCode(qcCheckTaskProduce.getCarCode());
qcCheckTaskProduce.setSupplierName(qcCheckTaskProduce.getCarName());
qcCheckTaskProduce.setCheckManName(null);
qcCheckTaskProduce.setCheckManCode(null);
int m0 = openMapper.insertQcCheckTaskProduce(qcCheckTaskProduce);
logger.info(qcCheckTaskProduce.getOrderNo()+":qc_check_task新增" + m0 + "成功");
String createBy = SecurityUtils.getUsername();
Date nowDate = DateUtils.getNowDate();
//获取当前所选工厂
String factoryCode = qcCheckTaskProduce.getFactoryCode();
String beLongId = IdUtils.fastSimpleUUID();
qcCheckTaskProduce.setCheckNo(bpDD + liushuiStr);
/**qc_check_task_detail**/
for (QcCheckTaskDetailDTO item : items) {
item.setRecordId(IdUtils.fastSimpleUUID());
item.setBelongTo(beLongId);
item.setCreateTime(nowDate);
item.setCreateBy(createBy);
item.setFactoryCode(factoryCode);
item.setStatus("Y");
}
int n = openMapper.addBatch(items);
logger.info(qcCheckTaskProduce.getOrderNo()+":qc_check_task_detail新增" + n + "成功");
/**取检测项**/
QcCheckTypeProjectDTO qctp = new QcCheckTypeProjectDTO();
qctp.setTypeId(qcCheckTaskProduce.getCheckType());//生产过程检验
qctp.setMaterialCode(qcCheckTaskProduce.getMaterialCode());//特性
//发企业微信--------------------开始(跟班组有关)
SysNoticeGroup noticeQo = new SysNoticeGroup();
if(qcCheckTaskProduce.getCheckType().equals("checkTypeCPPC")){
noticeQo.setNoticeId(12L);//批次成品检验
}
List<SysNoticeGroup> notices = openMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
for (SysNoticeGroup noticedto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticedto.getWxId());
String contentInfo = noticedto.getNoticeContent();
contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskProduce.getCheckNo()+"\n");
Matcher matcher = p2.matcher(contentInfo);
contentInfo = matcher.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);
/**qc_user_material取默认检查人**/
List<QcUserMaterialDTO> users = openMapper.getCheckUserBelongLine(qcCheckTaskProduce);
if (CollectionUtils.isEmpty(users)) {
users = openMapper.getCheckUsers(qcCheckTaskProduce.getCheckType());
}
logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
new Thread(() -> {
AjaxResult wxresult = this.sendWeChartMessage(wecharts);
logger.info("来料检验企业微信提醒结果:" + JSONObject.toJSONString(wxresult));
}).start();
for (QcUserMaterialDTO user : users) {
user.setId(IdUtils.fastSimpleUUID());
user.setBelongTo(beLongId);
user.setCheckNo(qcCheckTaskProduce.getCheckNo());
user.setCreateBy(createBy);
user.setFactoryCode(factoryCode);
user.setCreateTime(nowDate);
}
//发企业微信--------------------结束
/**qc_check_task_user**/
int m = openMapper.addCheckUsers(users);
logger.info(qcCheckTaskProduce.getOrderNo()+":检查人新增" + m + "成功");
/**qc_check_type_project**///个性
List<QcCheckTaskDetailDTO> items = openMapper.getTPByTypeMaterial(qctp);
/**qc_material_group_detail**/
QcMaterialGroupDetailDTO group = openMapper.getGroupByMaterial(qcCheckTaskProduce.getMaterialCode());
if (group == null) {
group = new QcMaterialGroupDetailDTO();
String initGroup = openMapper.getProductGroup(qcCheckTaskProduce.getMaterialCode());
if(initGroup != null){//包材共性
group.setGroupId(initGroup);
}else {//成品蚊香物料组
group.setGroupId("3dc0655fea3449c59c76a01cc5b91565");
}
}
qctp.setGroupId(group.getGroupId());//共性
List<QcCheckTaskDetailDTO> itemsGG = openMapper.getTPByTypeGroup(qctp);
items.addAll(itemsGG);
/**qc_check_task_detail**/
if (CollectionUtils.isEmpty(items)) {
return 0;//没有找到检测项目
}
/**qc_check_task**/
qcCheckTaskProduce.setRecordId(beLongId);
qcCheckTaskProduce.setFactoryCode(factoryCode);
qcCheckTaskProduce.setCreateTime(nowDate);
if(StringUtils.isNotBlank(qcCheckTaskProduce.getTypeCode())){
qcCheckTaskProduce.setTypeCode(qcCheckTaskProduce.getTypeCode());//大检验节点
}else{
qcCheckTaskProduce.setTypeCode("produce");//大检验节点
}
qcCheckTaskProduce.setIncomeTime(DateUtils.getNowDate());
qcCheckTaskProduce.setSupplierCode(qcCheckTaskProduce.getCarCode());
qcCheckTaskProduce.setSupplierName(qcCheckTaskProduce.getCarName());
qcCheckTaskProduce.setCheckManName(null);
qcCheckTaskProduce.setCheckManCode(null);
int m0 = openMapper.insertQcCheckTaskProduce(qcCheckTaskProduce);
logger.info(qcCheckTaskProduce.getOrderNo()+":qc_check_task新增" + m0 + "成功");
/**qc_check_task_detail**/
for (QcCheckTaskDetailDTO item : items) {
item.setRecordId(IdUtils.fastSimpleUUID());
item.setBelongTo(beLongId);
item.setCreateTime(nowDate);
item.setCreateBy(createBy);
item.setFactoryCode(factoryCode);
item.setStatus("Y");
}
int n = openMapper.addBatch(items);
logger.info(qcCheckTaskProduce.getOrderNo()+":qc_check_task_detail新增" + n + "成功");
//发企业微信--------------------开始(跟班组有关)
SysNoticeGroup noticeQo = new SysNoticeGroup();
if(qcCheckTaskProduce.getCheckType().equals("checkTypeCPPC")){
noticeQo.setNoticeId(12L);//批次成品检验
}
List<SysNoticeGroup> notices = openMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
for (SysNoticeGroup noticedto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticedto.getWxId());
String contentInfo = noticedto.getNoticeContent();
contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskProduce.getCheckNo()+"\n");
Matcher matcher = p2.matcher(contentInfo);
contentInfo = matcher.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);
}
logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
new Thread(() -> {
AjaxResult wxresult = this.sendWeChartMessage(wecharts);
logger.info("来料检验企业微信提醒结果:" + JSONObject.toJSONString(wxresult));
}).start();
}
//发企业微信--------------------结束
}
return n;
}finally {
DynamicDataSourceContextHolder.poll();
}
return n;
}
@Override
@ -702,6 +890,8 @@ public class OpenServiceImpl implements OpenService {
} catch (Exception e) {
e.printStackTrace();
return error(e.getMessage());
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override

@ -49,6 +49,12 @@
product_code = #{item.productCode}
</foreach>
</update>
<update id="updateEquipmentStatuss" parameterType="com.op.device.domain.EquEquipment">
update base_equipment
set equipment_status = #{equipmentStatus}
where equipment_code = #{equipmentCode}
and del_flag = '0'
</update>
<!--获取在邦rfid 工单的信息-->
<select id="getRfidInfo" resultType="com.op.system.api.domain.mes.ProRfidProcessDetail">
@ -430,6 +436,99 @@
)
</foreach>
</insert>
<insert id="insertEquRepairWorkOrders" parameterType="EquRepairWorkOrder">
insert into equ_repair_work_order
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="workId != null">work_id,</if>
<if test="orderId != null">order_id,</if>
<if test="workCode != null">work_code,</if>
<if test="orderCode != null">order_code,</if>
<if test="workHandle != null">work_handle,</if>
<if test="workPlanTime != null">work_plan_time,</if>
<if test="workPlanDownTime != null">work_plan_down_time,</if>
<if test="orderRelevance != null">order_relevance,</if>
<if test="workPerson != null">work_person,</if>
<if test="workPersonName != null">work_person_name,</if>
<if test="workTeam != null">work_team,</if>
<if test="workOutsource != null">work_outsource,</if>
<if test="workDownMachine != null">work_down_machine,</if>
<if test="equipmentCode != null">equipment_code,</if>
<if test="workReason != null">work_reason,</if>
<if test="workFaultDesc != null">work_fault_desc,</if>
<if test="workStartTime != null">work_start_time,</if>
<if test="workEndTime != null">work_end_time,</if>
<if test="actualDownStartTime != null">actual_down_start_time,</if>
<if test="actualDownEndTime != null">actual_down_end_time,</if>
<if test="workConnection != null">work_connection,</if>
<if test="workCostTime != null">work_cost_time,</if>
<if test="workCost != null">work_cost,</if>
<if test="workStatus != null">work_status,</if>
<if test="outWorkId != null">out_work_id,</if>
<if test="outWorkCode != null">out_work_code,</if>
<if test="attr1 != null">attr1,</if>
<if test="attr2 != null">attr2,</if>
<if test="attr3 != null">attr3,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="delFlag != null">del_flag,</if>
<if test="factoryCode != null">factory_code,</if>
<if test="faultType != null">fault_type,</if>
<if test="equipmentStatusDescription != null">equipment_status_description,</if>
<if test="repairMeasures != null">repair_measures,</if>
<if test="faultDownTime != null">fault_down_time,</if>
<if test="faultStartTime != null">fault_start_time,</if>
<if test="resultInspect != null">result_inspect,</if>
<if test="remark != null">remark,</if>
<if test="auditOpinion != null">audit_opinion,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="workId != null">#{workId},</if>
<if test="orderId != null">#{orderId},</if>
<if test="workCode != null">#{workCode},</if>
<if test="orderCode != null">#{orderCode},</if>
<if test="workHandle != null">#{workHandle},</if>
<if test="workPlanTime != null">#{workPlanTime},</if>
<if test="workPlanDownTime != null">#{workPlanDownTime},</if>
<if test="orderRelevance != null">#{orderRelevance},</if>
<if test="workPerson != null">#{workPerson},</if>
<if test="workPersonName != null">#{workPersonName},</if>
<if test="workTeam != null">#{workTeam},</if>
<if test="workOutsource != null">#{workOutsource},</if>
<if test="workDownMachine != null">#{workDownMachine},</if>
<if test="equipmentCode != null">#{equipmentCode},</if>
<if test="workReason != null">#{workReason},</if>
<if test="workFaultDesc != null">#{workFaultDesc},</if>
<if test="workStartTime != null">#{workStartTime},</if>
<if test="workEndTime != null">#{workEndTime},</if>
<if test="actualDownStartTime != null">#{actualDownStartTime},</if>
<if test="actualDownEndTime != null">#{actualDownEndTime},</if>
<if test="workConnection != null">#{workConnection},</if>
<if test="workCostTime != null">#{workCostTime},</if>
<if test="workCost != null">#{workCost},</if>
<if test="workStatus != null">#{workStatus},</if>
<if test="outWorkId != null">#{outWorkId},</if>
<if test="outWorkCode != null">#{outWorkCode},</if>
<if test="attr1 != null">#{attr1},</if>
<if test="attr2 != null">#{attr2},</if>
<if test="attr3 != null">#{attr3},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="factoryCode != null">#{factoryCode},</if>
<if test="faultType != null">#{fault_type},</if>
<if test="equipmentStatusDescription != null">#{equipmentStatusDescription},</if>
<if test="repairMeasures != null">#{repairMeasures},</if>
<if test="faultDownTime != null">#{faultDownTime},</if>
<if test="faultStartTime != null">#{faultStartTime},</if>
<if test="resultInspect != null">#{resultInspect},</if>
<if test="remark != null">#{remark},</if>
<if test="auditOpinion != null">#{auditOpinion},</if>
</trim>
</insert>
<select id="getNoticesGroup" resultType="com.op.system.api.domain.SysNoticeGroup">
select sng.notice_id noticeId,
@ -472,4 +571,59 @@
order by qmg.create_time desc
</select>
<resultMap type="EquEquipment" id="EquEquipmentResult">
<result property="equipmentId" column="equipment_id"/>
<result property="equipmentCode" column="equipment_code"/>
<result property="equipmentName" column="equipment_name"/>
<result property="equipmentBrand" column="equipment_brand"/>
<result property="equipmentSpec" column="equipment_spec"/>
<result property="equipmentTypeId" column="equipment_type_id"/>
<result property="equipmentTypeCode" column="equipment_type_code"/>
<result property="equipmentTypeName" column="equipment_type_name"/>
<result property="workshopId" column="workshop_id"/>
<result property="workshopCode" column="workshop_code"/>
<result property="workshopName" column="workshop_name"/>
<result property="status" column="status"/>
<result property="remark" column="remark"/>
<result property="attr1" column="attr1"/>
<result property="attr2" column="attr2"/>
<result property="attr3" column="attr3"/>
<result property="attr4" column="attr4"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="workshopSection" column="workshop_section"/>
<result property="equipmentLocation" column="equipment_location"/>
<result property="hourlyUnitPrice" column="hourly_unit_price"/>
<result property="equipmentBarcode" column="equipment_barcode"/>
<result property="equipmentBarcodeImage" column="equipment_barcode_image"/>
<result property="manufacturer" column="manufacturer"/>
<result property="supplier" column="supplier"/>
<result property="useLife" column="use_life"/>
<result property="buyTime" column="buy_time"/>
<result property="assetOriginalValue" column="asset_original_value"/>
<result property="netAssetValue" column="net_asset_value"/>
<result property="assetHead" column="asset_head"/>
<result property="fixedAssetCode" column="fixed_asset_code"/>
<result property="department" column="department"/>
<result property="unitWorkingHours" column="unit_working_hours"/>
<result property="plcIp" column="plc_ip"/>
<result property="plcPort" column="plc_port"/>
<result property="delFlag" column="del_flag"/>
<result property="sapAsset" column="sap_asset"/>
<result property="equipmentStatus" column="equipment_status"/>
<result property="equipmentCategory" column="equipment_category"/>
</resultMap>
<sql id="selectEquEquipmentVo">
select equipment_id, equipment_code, equipment_name, equipment_brand, equipment_spec, equipment_type_id, equipment_type_code, equipment_type_name, workshop_id, workshop_code, workshop_name, status, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, workshop_section, equipment_location, hourly_unit_price, equipment_barcode, equipment_barcode_image, manufacturer, supplier, use_life, buy_time, asset_original_value, net_asset_value, asset_head, fixed_asset_code, department, unit_working_hours, plc_ip, plc_port, del_flag, sap_asset,equipment_status,equipment_category from base_equipment
</sql>
<select id="selectEquEquipmentByEquEquipmentCode" parameterType="String" resultMap="EquEquipmentResult">
<include refid="selectEquEquipmentVo"/>
where equipment_code = #{equipmentCode}
and del_flag = '0'
</select>
</mapper>

@ -854,32 +854,36 @@ public class ProOrderServiceImpl implements IProOrderService {
// Calendar calendar = Calendar.getInstance();
//// calendar.add(Calendar.DAY_OF_MONTH,1);//明天
// sapqo.setCreateTime(calendar.getTime());
//
SapShopOrderQuery sapqo = new SapShopOrderQuery();
sapqo.setWerk(poolName.replace("ds_",""));
SapProOrder maxCreateTime = proOrderMapper.getMaxCreatetime();
if(maxCreateTime == null ){
sapqo.setErdat(DateFormatUtils.format(new Date(), "yyyyMMdd"));//S_ERDAT(创建日期) 例如20230923
}else{
sapqo.setErdat(maxCreateTime.getCreateTimeStr());//S_ERDAT(创建日期) 例如20230923
try {
SapShopOrderQuery sapqo = new SapShopOrderQuery();
sapqo.setWerk(poolName.replace("ds_",""));
SapProOrder maxCreateTime = proOrderMapper.getMaxCreatetime();
if(maxCreateTime == null ){
sapqo.setErdat(DateFormatUtils.format(new Date(), "yyyyMMdd"));//S_ERDAT(创建日期) 例如20230923
}else{
sapqo.setErdat(maxCreateTime.getCreateTimeStr());//S_ERDAT(创建日期) 例如20230923
}
//添加调用sap日志
SysSapLog sysSapLog = new SysSapLog();
sysSapLog.setId(IdUtils.fastSimpleUUID());
sysSapLog.setMesssge(sapqo.toString());
sysSapLog.setMethod("shopOrderSync");
sysSapLog.setReqcode("请求");
sysSapLog.setCreateTime(DateUtils.getNowDate());
proOrderMapper.addSapLog(sysSapLog);
R<List<SapProOrder>> rSapProOrder = remoteSapService.shopOrderSync(sapqo);
List<SapProOrder> newOrders = rSapProOrder.getData();
if(CollectionUtils.isEmpty(newOrders)){
System.out.println("无"+sapqo.getErdat()+"之后的最新订单");
}else {
syncSAPFunc(newOrders, "Job");
}
}finally {
DynamicDataSourceContextHolder.poll();
}
//添加调用sap日志
SysSapLog sysSapLog = new SysSapLog();
sysSapLog.setId(IdUtils.fastSimpleUUID());
sysSapLog.setMesssge(sapqo.toString());
sysSapLog.setMethod("shopOrderSync");
sysSapLog.setReqcode("请求");
sysSapLog.setCreateTime(DateUtils.getNowDate());
proOrderMapper.addSapLog(sysSapLog);
R<List<SapProOrder>> rSapProOrder = remoteSapService.shopOrderSync(sapqo);
List<SapProOrder> newOrders = rSapProOrder.getData();
if(CollectionUtils.isEmpty(newOrders)){
System.out.println("无"+sapqo.getErdat()+"之后的最新订单");
}else {
syncSAPFunc(newOrders, "Job");
}
}
/**

@ -176,107 +176,109 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
factoryCode = request.getHeader(key.substring(8)).replace("ds_","");
}
qcCheckTaskProduce.setCreateTime(DateUtils.getNowDate());
try {
String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
int liushuiNum = qcCheckTaskProduceMapper.getTodayMaxNum(qcCheckTaskProduce);
String liushuiStr = String.format("%04d", liushuiNum);
qcCheckTaskProduce.setCreateTime(DateUtils.getNowDate());
String createBy = SecurityUtils.getUsername();
Date nowDate = DateUtils.getNowDate();
String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
int liushuiNum = qcCheckTaskProduceMapper.getTodayMaxNum(qcCheckTaskProduce);
String liushuiStr = String.format("%04d", liushuiNum);
qcCheckTaskProduce.setCheckNo(bpDD+liushuiStr);
String createBy = SecurityUtils.getUsername();
Date nowDate = DateUtils.getNowDate();
/**取检测项**/
QcCheckTypeProject qctp= new QcCheckTypeProject();
qctp.setTypeId(qcCheckTaskProduce.getCheckType());//生产过程检验
qctp.setMaterialCode(qcCheckTaskProduce.getMaterialCode());//特性
/**qc_check_type_project**///个性
List<QcCheckTaskDetail> items = qcCheckTypeProjectMapper.getTPByTypeMaterial(qctp);
qcCheckTaskProduce.setCheckNo(bpDD+liushuiStr);
/**qc_material_group_detail**/
QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskProduce.getMaterialCode());
if(group == null){
group = new QcMaterialGroupDetail();
QcProjectType initGroup = qcCheckTypeProjectMapper.getProductGroup(qcCheckTaskProduce.getMaterialCode());
if(initGroup != null){//包材共性
group.setGroupId(initGroup.getGroupId());
}else {//成品蚊香物料组
group.setGroupId("3dc0655fea3449c59c76a01cc5b91565");
}
}
qctp.setGroupId(group.getGroupId());//共性
List<QcCheckTaskDetail> itemsGG = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp);
items.addAll(itemsGG);
/**取检测项**/
QcCheckTypeProject qctp= new QcCheckTypeProject();
qctp.setTypeId(qcCheckTaskProduce.getCheckType());//生产过程检验
qctp.setMaterialCode(qcCheckTaskProduce.getMaterialCode());//特性
/**qc_check_type_project**///个性
List<QcCheckTaskDetail> items = qcCheckTypeProjectMapper.getTPByTypeMaterial(qctp);
/**qc_check_task_detail**/
if(CollectionUtils.isEmpty(items)){
return 0;//没有找到检测项目
}
/**qc_check_task**/
String beLongId = IdUtils.fastSimpleUUID();
qcCheckTaskProduce.setRecordId(beLongId);
qcCheckTaskProduce.setFactoryCode(factoryCode);
qcCheckTaskProduce.setCreateTime(nowDate);
qcCheckTaskProduce.setTypeCode("produce");//大检验节点
/**qc_task_user start**/
List<QcUserMaterialDTO> users = null;
if(StringUtils.isNotBlank(qcCheckTaskProduce.getCheckManName())){
String checkManName = qcCheckTaskProduce.getCheckManName();
String checkManCode = qcCheckTaskProduce.getCheckManCode();
qcCheckTaskProduce.setCheckManName("");
qcCheckTaskProduce.setCheckManCode("");
String[] splitNames = checkManName.split(",");
String[] splitCodes = checkManCode.split(",");
List<QcCheckTaskUser> qcCheckTaskUserList = new ArrayList<>();
for (int i = 0; i < splitNames.length; i++) {
QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser();
qcCheckTaskUser.setCheckManName(splitNames[i]);
qcCheckTaskUser.setCheckManCode(splitCodes[i]);
qcCheckTaskUser.setCheckNo(qcCheckTaskProduce.getCheckNo());
qcCheckTaskUser.setBelongTo(beLongId);
qcCheckTaskUserList.add(qcCheckTaskUser);
}
//检验人插入
qcCheckTaskUserService.insertQcCheckTaskUserList(qcCheckTaskUserList);
}else{//上位机
qcCheckTaskProduce.setCheckManName("");
qcCheckTaskProduce.setCheckManCode("");
/**qc_user_material取默认检查人**/
QcCheckTaskIncome qcCheckTaskIncome = new QcCheckTaskIncome();
qcCheckTaskIncome.setCheckType(qcCheckTaskProduce.getCheckType());
qcCheckTaskIncome.setMaterialCode(qcCheckTaskProduce.getMaterialCode());
qcCheckTaskIncome.setCheckLoc(qcCheckTaskProduce.getCheckLoc());
users = qcCheckTaskIncomeMapper.getCheckUserBelongLine(qcCheckTaskIncome);
if(CollectionUtils.isEmpty(users)){
users = qcCheckTaskIncomeMapper.getUserByCheckType(qcCheckTaskProduce.getCheckType());
}
if(!CollectionUtils.isEmpty(users)){
for(QcUserMaterialDTO user:users){
user.setId(IdUtils.fastSimpleUUID());
user.setBelongTo(beLongId);
user.setCheckNo(qcCheckTaskProduce.getCheckNo());
user.setCreateBy(createBy);
user.setFactoryCode(factoryCode);
user.setCreateTime(nowDate);
/**qc_material_group_detail**/
QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskProduce.getMaterialCode());
if(group == null){
group = new QcMaterialGroupDetail();
QcProjectType initGroup = qcCheckTypeProjectMapper.getProductGroup(qcCheckTaskProduce.getMaterialCode());
if(initGroup != null){//包材共性
group.setGroupId(initGroup.getGroupId());
}else {//成品蚊香物料组
group.setGroupId("3dc0655fea3449c59c76a01cc5b91565");
}
int m=qcCheckTaskIncomeMapper.addCheckUsers(users);
logger.info("检查人新增"+m+"成功");
}
}
/** 不良品数据插入 */
BigDecimal noOkQuality = new BigDecimal(0);
List<QcCheckTaskDefect> defectList = qcCheckTaskProduce.getDefects();
if (!CollectionUtils.isEmpty(defectList)) {
for (QcCheckTaskDefect defect : defectList) {
qctp.setGroupId(group.getGroupId());//共性
List<QcCheckTaskDetail> itemsGG = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp);
items.addAll(itemsGG);
/**qc_check_task_detail**/
if(CollectionUtils.isEmpty(items)){
return 0;//没有找到检测项目
}
/**qc_check_task**/
String beLongId = IdUtils.fastSimpleUUID();
qcCheckTaskProduce.setRecordId(beLongId);
qcCheckTaskProduce.setFactoryCode(factoryCode);
qcCheckTaskProduce.setCreateTime(nowDate);
qcCheckTaskProduce.setTypeCode("produce");//大检验节点
/**qc_task_user start**/
List<QcUserMaterialDTO> users = null;
if(StringUtils.isNotBlank(qcCheckTaskProduce.getCheckManName())){
String checkManName = qcCheckTaskProduce.getCheckManName();
String checkManCode = qcCheckTaskProduce.getCheckManCode();
qcCheckTaskProduce.setCheckManName("");
qcCheckTaskProduce.setCheckManCode("");
String[] splitNames = checkManName.split(",");
String[] splitCodes = checkManCode.split(",");
List<QcCheckTaskUser> qcCheckTaskUserList = new ArrayList<>();
for (int i = 0; i < splitNames.length; i++) {
QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser();
qcCheckTaskUser.setCheckManName(splitNames[i]);
qcCheckTaskUser.setCheckManCode(splitCodes[i]);
qcCheckTaskUser.setCheckNo(qcCheckTaskProduce.getCheckNo());
qcCheckTaskUser.setBelongTo(beLongId);
qcCheckTaskUserList.add(qcCheckTaskUser);
}
//检验人插入
qcCheckTaskUserService.insertQcCheckTaskUserList(qcCheckTaskUserList);
}else{//上位机
qcCheckTaskProduce.setCheckManName("");
qcCheckTaskProduce.setCheckManCode("");
/**qc_user_material取默认检查人**/
QcCheckTaskIncome qcCheckTaskIncome = new QcCheckTaskIncome();
qcCheckTaskIncome.setCheckType(qcCheckTaskProduce.getCheckType());
qcCheckTaskIncome.setMaterialCode(qcCheckTaskProduce.getMaterialCode());
qcCheckTaskIncome.setCheckLoc(qcCheckTaskProduce.getCheckLoc());
users = qcCheckTaskIncomeMapper.getCheckUserBelongLine(qcCheckTaskIncome);
if(CollectionUtils.isEmpty(users)){
users = qcCheckTaskIncomeMapper.getUserByCheckType(qcCheckTaskProduce.getCheckType());
}
if(!CollectionUtils.isEmpty(users)){
for(QcUserMaterialDTO user:users){
user.setId(IdUtils.fastSimpleUUID());
user.setBelongTo(beLongId);
user.setCheckNo(qcCheckTaskProduce.getCheckNo());
user.setCreateBy(createBy);
user.setFactoryCode(factoryCode);
user.setCreateTime(nowDate);
}
int m=qcCheckTaskIncomeMapper.addCheckUsers(users);
logger.info("检查人新增"+m+"成功");
}
}
/** 不良品数据插入 */
BigDecimal noOkQuality = new BigDecimal(0);
List<QcCheckTaskDefect> defectList = qcCheckTaskProduce.getDefects();
if (!CollectionUtils.isEmpty(defectList)) {
for (QcCheckTaskDefect defect : defectList) {
defect.setBelongTo(beLongId);
//qcCheckTaskDefectService.insertQcCheckTaskDefect(defect);
noOkQuality = noOkQuality.add(defect.getNoOkQuality()==null?new BigDecimal("0"):defect.getNoOkQuality());
//qcCheckTaskDefectService.insertQcCheckTaskDefect(defect);
noOkQuality = noOkQuality.add(defect.getNoOkQuality()==null?new BigDecimal("0"):defect.getNoOkQuality());
}
}
}
qcCheckTaskProduce.setNoOkQuality(noOkQuality);
qcCheckTaskProduce.setNoOkQuality(noOkQuality);
// /**qc_sample_rule**/
// QcCheckTaskIncome sampQua = new QcCheckTaskIncome();
@ -287,64 +289,70 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
// qcCheckTaskProduce.setSampleQuality(new BigDecimal(sampNum));
// }
/**qc_check_task**/
if("LJ01".equals(qcCheckTaskProduce.getProductType())){
//正常
qcCheckTaskProduce.setProductType("a");
}else if("LJ02".equals(qcCheckTaskProduce.getProductType())){
//返修
qcCheckTaskProduce.setProductType("b");
}else if("LJ04".equals(qcCheckTaskProduce.getProductType())){
//试产
qcCheckTaskProduce.setProductType("c");
}
qcCheckTaskProduce.setIncomeTime(DateUtils.getNowDate());
qcCheckTaskProduceMapper.insertQcCheckTaskProduce(qcCheckTaskProduce);
/**qc_check_task_detail**/
for (QcCheckTaskDetail item : items) {
item.setRecordId(IdUtils.fastSimpleUUID());
item.setBelongTo(beLongId);
item.setCreateTime(nowDate);
item.setCreateBy(createBy);
item.setFactoryCode(factoryCode);
item.setStatus("Y");
}
int bn = qcCheckTaskDetailMapper.addBatch(items);
//发企业微信--------------------开始
SysNoticeGroup noticeQo = new SysNoticeGroup();
if(qcCheckTaskProduce.getCheckType().equals("checkTypeSC")){
noticeQo.setNoticeId(19L);
}else if(qcCheckTaskProduce.getCheckType().equals("checkTypeSCXJ")){
noticeQo.setNoticeId(20L);
}
List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
for (SysNoticeGroup noticedto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticedto.getWxId());
String contentInfo = notices.get(0).getNoticeContent();
contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskProduce.getCheckNo() + "\n");
Matcher m = p2.matcher(contentInfo);
contentInfo = m.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);
/**qc_check_task**/
if("LJ01".equals(qcCheckTaskProduce.getProductType())){
//正常
qcCheckTaskProduce.setProductType("a");
}else if("LJ02".equals(qcCheckTaskProduce.getProductType())){
//返修
qcCheckTaskProduce.setProductType("b");
}else if("LJ04".equals(qcCheckTaskProduce.getProductType())){
//试产
qcCheckTaskProduce.setProductType("c");
}
logger.info("质检检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
CompletableFuture.runAsync(() -> {
System.out.println("异步执行企业微信发送");
AjaxResult result = remoteOpenService.sendWeChartMessage(wecharts);
logger.info("质检检验企业微信提醒结果:" + JSONObject.toJSONString(result));
});
qcCheckTaskProduce.setIncomeTime(DateUtils.getNowDate());
qcCheckTaskProduceMapper.insertQcCheckTaskProduce(qcCheckTaskProduce);
/**qc_check_task_detail**/
for (QcCheckTaskDetail item : items) {
item.setRecordId(IdUtils.fastSimpleUUID());
item.setBelongTo(beLongId);
item.setCreateTime(nowDate);
item.setCreateBy(createBy);
item.setFactoryCode(factoryCode);
item.setStatus("Y");
}
//发企业微信--------------------结束
int bn = qcCheckTaskDetailMapper.addBatch(items);
//发企业微信--------------------开始
SysNoticeGroup noticeQo = new SysNoticeGroup();
if(qcCheckTaskProduce.getCheckType().equals("checkTypeSC")){
noticeQo.setNoticeId(19L);
}else if(qcCheckTaskProduce.getCheckType().equals("checkTypeSCXJ")){
noticeQo.setNoticeId(20L);
}
List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
for (SysNoticeGroup noticedto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticedto.getWxId());
String contentInfo = notices.get(0).getNoticeContent();
contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskProduce.getCheckNo() + "\n");
Matcher m = p2.matcher(contentInfo);
contentInfo = m.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);
}
logger.info("质检检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
CompletableFuture.runAsync(() -> {
System.out.println("异步执行企业微信发送");
AjaxResult result = remoteOpenService.sendWeChartMessage(wecharts);
logger.info("质检检验企业微信提醒结果:" + JSONObject.toJSONString(result));
});
}
//发企业微信--------------------结束
}
return bn;
}finally {
DynamicDataSourceContextHolder.poll();
}
return bn;
}
/**

@ -143,8 +143,14 @@ public class QcCheckTaskUserServiceImpl implements IQcCheckTaskUserService {
@Override
public int insertQcCheckTaskUserPDA(List<QcCheckTaskUser> qcCheckTaskUserList) {
DynamicDataSourceContextHolder.push("ds_" + qcCheckTaskUserList.get(0).getFactoryCode());
String factoryCode = qcCheckTaskUserList.get(0).getFactoryCode();
return this.insertTaskUsers(qcCheckTaskUserList, factoryCode);
try {
String factoryCode = qcCheckTaskUserList.get(0).getFactoryCode();
return this.insertTaskUsers(qcCheckTaskUserList, factoryCode);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
private int insertTaskUsers(List<QcCheckTaskUser> qcCheckTaskUserList, String factoryCode) {

@ -124,8 +124,13 @@ public class QcCheckTypeServiceImpl implements IQcCheckTypeService {
@Override
public List<QcCheckType> getTopTaskInfo(QcCheckType qcCheckType) {
DynamicDataSourceContextHolder.push(qcCheckType.getFactoryCode());// 这是数据源的key
List<QcCheckType> dtos = qcCheckTypeMapper.getTopTaskInfo(qcCheckType);//检验任务
return dtos;
try {
List<QcCheckType> dtos = qcCheckTypeMapper.getTopTaskInfo(qcCheckType);//检验任务
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override

@ -36,42 +36,47 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
@Override
public List<QcInterface> getDictData(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push("master");
return qcInterfaceMapper.getDictData(qcInterface);
try {
return qcInterfaceMapper.getDictData(qcInterface);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
public List<QcInterface> getOverallInfo(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
try {
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
qcInterface.setTypeCode("checkTypeLL");
List<QcInterface> dtos = qcInterfaceMapper.getOverallInfo(qcInterface);
if (!CollectionUtils.isEmpty(dtos)) {
QcInterface qi0 = new QcInterface();
qi0.setYmdTypeName("all");
qi0.setQuality(dtos.get(0).getQuality());
dtos.add(qi0);
QcInterface qi1 = new QcInterface();
qi1.setYmdTypeName("unOk");
qi1.setQuality(dtos.get(0).getNoOkQuality());
dtos.add(qi1);
QcInterface qif = new QcInterface();
qif.setYmdTypeName("okRate");
if (dtos.get(0).getNoOkQuality().equals("0.00")) {
qif.setQuality("100%");
} else {
BigDecimal okRate = (new BigDecimal(dtos.get(0).getQuality())
.subtract(new BigDecimal(dtos.get(0).getNoOkQuality())))
.multiply(new BigDecimal("100"))
.divide(new BigDecimal(dtos.get(0).getQuality()), 2, RoundingMode.HALF_UP);
qif.setQuality(okRate.toString() + "%");
}
dtos.add(qif);
dtos.remove(0);
}else{
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
qcInterface.setTypeCode("checkTypeLL");
List<QcInterface> dtos = qcInterfaceMapper.getOverallInfo(qcInterface);
if (!CollectionUtils.isEmpty(dtos)) {
QcInterface qi0 = new QcInterface();
qi0.setYmdTypeName("all");
qi0.setQuality(dtos.get(0).getQuality());
dtos.add(qi0);
QcInterface qi1 = new QcInterface();
qi1.setYmdTypeName("unOk");
qi1.setQuality(dtos.get(0).getNoOkQuality());
dtos.add(qi1);
QcInterface qif = new QcInterface();
qif.setYmdTypeName("okRate");
if (dtos.get(0).getNoOkQuality().equals("0.00")) {
qif.setQuality("100%");
} else {
BigDecimal okRate = (new BigDecimal(dtos.get(0).getQuality())
.subtract(new BigDecimal(dtos.get(0).getNoOkQuality())))
.multiply(new BigDecimal("100"))
.divide(new BigDecimal(dtos.get(0).getQuality()), 2, RoundingMode.HALF_UP);
qif.setQuality(okRate.toString() + "%");
}
dtos.add(qif);
dtos.remove(0);
}else{
}
}
// /**质量看板测试开始**/
// QcInterface qi0 = new QcInterface();
// qi0.setYmdTypeName("all");
@ -86,7 +91,11 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
// qi2.setQuality("0.00%");
// dtos.add(qi2);
// /**质量看板测试结束**/
return dtos;
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
@ -113,57 +122,71 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
@Override
public List<QcInterface> getSupplierBadTOP5(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
try {
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
qcInterface.setCheckType("checkTypeLL");
List<QcInterface> dtos = qcInterfaceMapper.getSupplierBadTOP5(qcInterface);
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
qcInterface.setCheckType("checkTypeLL");
List<QcInterface> dtos = qcInterfaceMapper.getSupplierBadTOP5(qcInterface);
return dtos;
}
@Override
public List<QcInterface> getSupplierTaskList(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
List<QcInterface> dtos = qcInterfaceMapper.getSupplierTaskList(qcInterface);
for (QcInterface dto : dtos) {
String[] ymdArray = dto.getIncomeTime().split(" ")[0].split("-");
LocalDate date1 = LocalDate.of(Integer.parseInt(ymdArray[0]),
Integer.parseInt(ymdArray[1]),
Integer.parseInt(ymdArray[2]));
LocalDate date2 = LocalDate.now();
if (date1.compareTo(date2) < 0) {
dto.setCheckStatus("逾期未检");
} else {
dto.setCheckStatus("0".equals(dto.getCheckStatus()) ? "待检测" : "检测完成");
}
dto.setCheckResult("Y".equals(dto.getCheckResult()) ? "合格" : "不合格");
//不合格原因
if ("N".equals(dto.getCheckResult())) {
List<QcCheckTaskDetail> reasons = qcInterfaceMapper.getReasons(dto);
StringBuffer reasonNames = new StringBuffer();
for (QcCheckTaskDetail r : reasons) {
reasonNames.append(r.getRuleName());
reasonNames.append(";");
try {
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
List<QcInterface> dtos = qcInterfaceMapper.getSupplierTaskList(qcInterface);
for (QcInterface dto : dtos) {
String[] ymdArray = dto.getIncomeTime().split(" ")[0].split("-");
LocalDate date1 = LocalDate.of(Integer.parseInt(ymdArray[0]),
Integer.parseInt(ymdArray[1]),
Integer.parseInt(ymdArray[2]));
LocalDate date2 = LocalDate.now();
if (date1.compareTo(date2) < 0) {
dto.setCheckStatus("逾期未检");
} else {
dto.setCheckStatus("0".equals(dto.getCheckStatus()) ? "待检测" : "检测完成");
}
dto.setCheckResult("Y".equals(dto.getCheckResult()) ? "合格" : "不合格");
//不合格原因
if ("N".equals(dto.getCheckResult())) {
List<QcCheckTaskDetail> reasons = qcInterfaceMapper.getReasons(dto);
StringBuffer reasonNames = new StringBuffer();
for (QcCheckTaskDetail r : reasons) {
reasonNames.append(r.getRuleName());
reasonNames.append(";");
}
dto.setReasons(reasonNames.toString());
}
dto.setReasons(reasonNames.toString());
}
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
return dtos;
}
@Override
public List<QcInterface> getSupplierNoOkList(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
List<QcInterface> dtos = qcInterfaceMapper.getSupplierNoOkList(qcInterface);
for (QcInterface dto : dtos) {
dto.setCheckStatus("0".equals(dto.getCheckStatus()) ? "待检测" : "检测完成");
dto.setCheckResult("Y".equals(dto.getCheckResult()) ? "合格" : "不合格");
try {
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
List<QcInterface> dtos = qcInterfaceMapper.getSupplierNoOkList(qcInterface);
for (QcInterface dto : dtos) {
dto.setCheckStatus("0".equals(dto.getCheckStatus()) ? "待检测" : "检测完成");
dto.setCheckResult("Y".equals(dto.getCheckResult()) ? "合格" : "不合格");
}
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
return dtos;
}
@Override
@ -285,50 +308,54 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
@Override
public QcInterface getLineDayNoOk(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
QcInterface dto = new QcInterface();
try {
QcInterface dto = new QcInterface();
Calendar calendar = Calendar.getInstance();
Date now = calendar.getTime();
calendar.set(Calendar.DAY_OF_MONTH, 1);
Date firstDayOfMonth = calendar.getTime();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String startTime = dateFormat.format(firstDayOfMonth);
String endTime = dateFormat.format(now);
Calendar calendar = Calendar.getInstance();
Date now = calendar.getTime();
calendar.set(Calendar.DAY_OF_MONTH, 1);
Date firstDayOfMonth = calendar.getTime();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String startTime = dateFormat.format(firstDayOfMonth);
String endTime = dateFormat.format(now);
//日期名称数组
List<String> xAxisDatas = getDays(startTime, endTime);
dto.setDayStr(xAxisDatas);//
//通过报工获取到真实参与生产的线体
List<QcProCheck> lines = qcInterfaceMapper.getLineNames(startTime.substring(0,7));
if (CollectionUtils.isEmpty(lines)) {
return null;
}
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
qcInterface.setYmdType("yyyy");
Map<String, QcInterface> noOkHzs = qcInterfaceMapper.getDayNoOkHz(qcInterface);
if (CollectionUtils.isEmpty(noOkHzs)) {
return null;
}
List<QcInterface> series = new ArrayList<>();
QcInterface serie = null;
for (QcProCheck line : lines) {
serie = new QcInterface();
List<String> data = new ArrayList<>();
serie.setMachineName(line.getMachineName());
for (String dayStr : xAxisDatas) {
QcInterface dayInfo = noOkHzs.get(line.getMachineCode() + dayStr);
if (dayInfo != null) {
data.add(dayInfo.getNoOkQuality());
} else {
data.add("0");
}
//日期名称数组
List<String> xAxisDatas = getDays(startTime, endTime);
dto.setDayStr(xAxisDatas);//
//通过报工获取到真实参与生产的线体
List<QcProCheck> lines = qcInterfaceMapper.getLineNames(startTime.substring(0,7));
if (CollectionUtils.isEmpty(lines)) {
return null;
}
serie.setData(data);
series.add(serie);
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
qcInterface.setYmdType("yyyy");
Map<String, QcInterface> noOkHzs = qcInterfaceMapper.getDayNoOkHz(qcInterface);
if (CollectionUtils.isEmpty(noOkHzs)) {
return null;
}
List<QcInterface> series = new ArrayList<>();
QcInterface serie = null;
for (QcProCheck line : lines) {
serie = new QcInterface();
List<String> data = new ArrayList<>();
serie.setMachineName(line.getMachineName());
for (String dayStr : xAxisDatas) {
QcInterface dayInfo = noOkHzs.get(line.getMachineCode() + dayStr);
if (dayInfo != null) {
data.add(dayInfo.getNoOkQuality());
} else {
data.add("0");
}
}
serie.setData(data);
series.add(serie);
}
dto.setSeries(series);//
return dto;
}finally {
DynamicDataSourceContextHolder.poll();
}
dto.setSeries(series);//
return dto;
}
@Override

@ -49,28 +49,32 @@ public class QcProCheckServiceImpl implements QcProCheckService {
@Override
public R<Boolean> saveQcProCheck(QcProCheck qcProCheck) {
DynamicDataSourceContextHolder.push("ds_" + qcProCheck.getFactoryCode());
qcProCheck.setId(UUID.randomUUID().toString().replace("-", ""));
try {
qcProCheck.setId(UUID.randomUUID().toString().replace("-", ""));
//上传附件
if (StringUtils.isNotEmpty(qcProCheck.getFileId())) {
String[] ids = qcProCheck.getFileId().split(",");
List<BaseFileData> files = new ArrayList<>();
BaseFileData file = null;
for (String id : ids) {
file = new BaseFileData();
file.setFileId(IdUtils.fastSimpleUUID());
file.setFileName(id.split("&fileName=")[1]);
file.setFileAddress(id);
file.setSourceId(qcProCheck.getId());
file.setCreateBy(SecurityUtils.getUsername());
file.setCreateTime(new Date());
files.add(file);
//上传附件
if (StringUtils.isNotEmpty(qcProCheck.getFileId())) {
String[] ids = qcProCheck.getFileId().split(",");
List<BaseFileData> files = new ArrayList<>();
BaseFileData file = null;
for (String id : ids) {
file = new BaseFileData();
file.setFileId(IdUtils.fastSimpleUUID());
file.setFileName(id.split("&fileName=")[1]);
file.setFileAddress(id);
file.setSourceId(qcProCheck.getId());
file.setCreateBy(SecurityUtils.getUsername());
file.setCreateTime(new Date());
files.add(file);
}
qcProCheckMapper.insertBaseFileBatch(files);
}
qcProCheckMapper.insertBaseFileBatch(files);
qcProCheck.setCreateBy(SecurityUtils.getUsername());
qcProCheck.setCreateTime(DateUtils.getNowDate());
qcProCheckMapper.insertQcProCheck(qcProCheck);
}finally {
DynamicDataSourceContextHolder.poll();
}
qcProCheck.setCreateBy(SecurityUtils.getUsername());
qcProCheck.setCreateTime(DateUtils.getNowDate());
qcProCheckMapper.insertQcProCheck(qcProCheck);
return R.ok();
}
@ -93,23 +97,33 @@ public class QcProCheckServiceImpl implements QcProCheckService {
@Override
public List<QcProCheck> selectQcProCheckList(QcProCheck qcProCheck) {
DynamicDataSourceContextHolder.push("ds_" + qcProCheck.getFactoryCode());
return qcProCheckMapper.selectQcProCheckList(qcProCheck);
try {
return qcProCheckMapper.selectQcProCheckList(qcProCheck);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
public QcProCheck getInfoByRfid(QcProCheck qcProCheck) {
DynamicDataSourceContextHolder.push("ds_" + qcProCheck.getFactoryCode());
QcProCheck dto = qcProCheckMapper.getInfoByRfid(qcProCheck);
if (dto == null || StringUtils.isEmpty(dto.getProductCode())) {
dto = new QcProCheck();
dto.setProductCode("EmptyPallet");
} else {
if (StringUtils.isNotEmpty(dto.getProductName())) {
dto.setProductSpc(dto.getProductName().split("mm")[0] + "mm");
}
try {
QcProCheck dto = qcProCheckMapper.getInfoByRfid(qcProCheck);
if (dto == null || StringUtils.isEmpty(dto.getProductCode())) {
dto = new QcProCheck();
dto.setProductCode("EmptyPallet");
} else {
if (StringUtils.isNotEmpty(dto.getProductName())) {
dto.setProductSpc(dto.getProductName().split("mm")[0] + "mm");
}
}
return dto;
}finally {
DynamicDataSourceContextHolder.poll();
}
return dto;
}
@Override
@ -122,62 +136,77 @@ public class QcProCheckServiceImpl implements QcProCheckService {
public List<QcProCheck> getDictList(QcProCheck qcProCheck) {
DynamicDataSourceContextHolder.push("master");
//qcProCheck.setEquipmentTypeCode("equ_type");
return qcProCheckMapper.getDictList(qcProCheck);
try {
return qcProCheckMapper.getDictList(qcProCheck);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
public List<QcCheckTaskIncome> getCheckTaskList(QcCheckTaskIncome qcCheckTaskIncome) {
DynamicDataSourceContextHolder.push(qcCheckTaskIncome.getFactoryCode());
List<QcCheckTaskIncome> dtos = qcProCheckMapper.getCheckTaskList(qcCheckTaskIncome);
for (QcCheckTaskIncome dto : dtos) {
if (StringUtils.isEmpty(dto.getWorkorderCodeSap())) {
dto.setWorkorderCodeSap(dto.getOrderNo());
try {
List<QcCheckTaskIncome> dtos = qcProCheckMapper.getCheckTaskList(qcCheckTaskIncome);
for (QcCheckTaskIncome dto : dtos) {
if (StringUtils.isEmpty(dto.getWorkorderCodeSap())) {
dto.setWorkorderCodeSap(dto.getOrderNo());
}
if("checkTypeCP".equals(qcCheckTaskIncome.getCheckType())){//成品检验数量取实际产量
dto.setQuality(qcProCheckMapper.getMesReportQuality(dto.getOrderNo()));
}
}
if("checkTypeCP".equals(qcCheckTaskIncome.getCheckType())){//成品检验数量取实际产量
dto.setQuality(qcProCheckMapper.getMesReportQuality(dto.getOrderNo()));
}
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
return dtos;
}
@Override
public QcCheckTaskIncome getCheckTaskDetailList(QcCheckTaskDetail qcCheckTaskDetail) {
DynamicDataSourceContextHolder.push(qcCheckTaskDetail.getFactoryCode());
QcCheckTaskIncome dto = qcCheckTaskIncomeMapper.getTaskInfo(qcCheckTaskDetail.getBelongTo());
List<QcCheckTaskDetail> qcCheckTaskDetails = qcCheckTaskIncomeMapper.getCkeckProjectList(qcCheckTaskDetail);
/**qc_check_task_defect**/
Map<String,QcCheckTaskDefect> defectMap = qcCheckTaskDefectMapper.getDefectMap(qcCheckTaskDetail);
try {
QcCheckTaskIncome dto = qcCheckTaskIncomeMapper.getTaskInfo(qcCheckTaskDetail.getBelongTo());
List<QcCheckTaskDetail> qcCheckTaskDetails = qcCheckTaskIncomeMapper.getCkeckProjectList(qcCheckTaskDetail);
/**qc_check_task_defect**/
Map<String,QcCheckTaskDefect> defectMap = qcCheckTaskDefectMapper.getDefectMap(qcCheckTaskDetail);
for (QcCheckTaskDetail qcd : qcCheckTaskDetails) {
for (QcCheckTaskDetail qcd : qcCheckTaskDetails) {
if(StringUtils.isNotBlank(qcd.getSampleQuality())){
qcd.setSampleQuality(qcd.getSampleQuality().replaceAll("\\..*", ""));//去掉小数
if(StringUtils.isNotBlank(qcd.getSampleQuality())){
qcd.setSampleQuality(qcd.getSampleQuality().replaceAll("\\..*", ""));//去掉小数
}
List<BaseFile> files = qmsFileMapper.getBaseFileBatch(qcd.getRecordId());
if (CollectionUtils.isNotEmpty(files)) {
qcd.setFiles(files);
}
QcCheckTaskDefect defectInfo = defectMap.get(qcd.getRecordId());
if(defectInfo != null){
qcd.setDefectCodes(defectInfo.getDefectCodes());
qcd.setDefectNames(defectInfo.getDefectNames());
qcd.setDefectQualitys(defectInfo.getDefectQualitys());
qcd.setClassTypeCodes(defectInfo.getClassId());
}
}
List<BaseFile> files = qmsFileMapper.getBaseFileBatch(qcd.getRecordId());
if (CollectionUtils.isNotEmpty(files)) {
qcd.setFiles(files);
dto.setQcCheckTaskDetails(qcCheckTaskDetails);
List<QcCheckTaskDefect> defects = qcCheckTaskIncomeMapper.getCkeckDefectList(qcCheckTaskDetail);
if (CollectionUtils.isEmpty(defects)) {
defects = qcCheckTaskIncomeMapper.getDefectType(qcCheckTaskDetail);
}
dto.setDefects(defects);
QcCheckTaskDefect defectInfo = defectMap.get(qcd.getRecordId());
if(defectInfo != null){
qcd.setDefectCodes(defectInfo.getDefectCodes());
qcd.setDefectNames(defectInfo.getDefectNames());
qcd.setDefectQualitys(defectInfo.getDefectQualitys());
qcd.setClassTypeCodes(defectInfo.getClassId());
}
return dto;
}finally {
DynamicDataSourceContextHolder.poll();
}
dto.setQcCheckTaskDetails(qcCheckTaskDetails);
List<QcCheckTaskDefect> defects = qcCheckTaskIncomeMapper.getCkeckDefectList(qcCheckTaskDetail);
if (CollectionUtils.isEmpty(defects)) {
defects = qcCheckTaskIncomeMapper.getDefectType(qcCheckTaskDetail);
}
dto.setDefects(defects);
return dto;
}
@Override
public QcCheckTaskIncome getCheckTaskDetailListCg(QcCheckTaskDetail qcCheckTaskDetail) {

@ -130,28 +130,31 @@ public class SapController extends BaseController {
sysUser.setUserId(1L);
R<List<Map<String, String>>> dateSources0 = remoteUserService.getPoolNameList(sysUser);
List<Map<String, String>> dateSources = dateSources0.getData();
dateSources.forEach(dateSource -> {
if (!"ds_999".equals(dateSource.get("poolName"))) {
logger.info("++++++++++++" + dateSource.get("poolName") + "++++bom同步开始++++++++++");
DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key
try {
dateSources.forEach(dateSource -> {
if (!"ds_999".equals(dateSource.get("poolName"))) {
logger.info("++++++++++++" + dateSource.get("poolName") + "++++bom同步开始++++++++++");
DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key
Date maxTime0 = sapBomMapper.getBomMaxTime();
if (maxTime0 != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(maxTime0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date maxTime = calendar.getTime();
qo.setAedat(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923
}
R r = sapBomService.bomSync(qo);
if (r.getCode() != 200) {
logger.error("++++++++++++" + dateSource.get("poolName") + "同步bom失败错误信息" + r.getMsg());
}
logger.error("++++++++++++" + dateSource.get("poolName") + "++++bom同步结束++++++++++");
}
});
Date maxTime0 = sapBomMapper.getBomMaxTime();
if (maxTime0 != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(maxTime0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date maxTime = calendar.getTime();
qo.setAedat(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923
}
R r = sapBomService.bomSync(qo);
if (r.getCode() != 200) {
logger.error("++++++++++++" + dateSource.get("poolName") + "同步bom失败错误信息" + r.getMsg());
}
logger.error("++++++++++++" + dateSource.get("poolName") + "++++bom同步结束++++++++++");
}
});
}finally {
DynamicDataSourceContextHolder.poll();
}
return R.ok();
}
/**
@ -179,30 +182,35 @@ public class SapController extends BaseController {
sysUser.setUserId(1L);
R<List<Map<String, String>>> dateSources0 = remoteUserService.getPoolNameList(sysUser);
List<Map<String, String>> dateSources = dateSources0.getData();
dateSources.forEach(dateSource -> {
logger.info("++++++++++++" + dateSource.get("poolName") + "++++工作中心开始++++++++++");
DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key
qo.setWerks(dateSource.get("poolName").replace("ds_", ""));//工厂
Date maxTime0 = sapBomMapper.getMaxTime();
if (maxTime0 != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(maxTime0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date maxTime = calendar.getTime();
qo.setAedat(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923
}
R r = sapWorkCenterService.sapWorkCenterSync(qo);
if (r.getCode() == 200) {
List<SapWorkCenter> dtos = (List<SapWorkCenter>) r.getData();
if (!CollectionUtils.isEmpty(dtos)) {
sapWorkCenterService.syncWorkCenter(dtos);
try {
dateSources.forEach(dateSource -> {
logger.info("++++++++++++" + dateSource.get("poolName") + "++++工作中心开始++++++++++");
DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key
qo.setWerks(dateSource.get("poolName").replace("ds_", ""));//工厂
Date maxTime0 = sapBomMapper.getMaxTime();
if (maxTime0 != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(maxTime0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date maxTime = calendar.getTime();
qo.setAedat(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923
}
} else {
logger.error("++++++++++++" + dateSource.get("poolName") + "错误信息:" + r.getMsg());
}
logger.error("++++++++++++" + dateSource.get("poolName") + "++++工作中心结束++++++++++");
});
R r = sapWorkCenterService.sapWorkCenterSync(qo);
if (r.getCode() == 200) {
List<SapWorkCenter> dtos = (List<SapWorkCenter>) r.getData();
if (!CollectionUtils.isEmpty(dtos)) {
sapWorkCenterService.syncWorkCenter(dtos);
}
} else {
logger.error("++++++++++++" + dateSource.get("poolName") + "错误信息:" + r.getMsg());
}
logger.error("++++++++++++" + dateSource.get("poolName") + "++++工作中心结束++++++++++");
});
}finally {
DynamicDataSourceContextHolder.poll();
}
return R.ok();
}
@ -263,31 +271,35 @@ public class SapController extends BaseController {
sysUser.setUserId(1L);
R<List<Map<String, String>>> dateSources0 = remoteUserService.getPoolNameList(sysUser);
List<Map<String, String>> dateSources = dateSources0.getData();
dateSources.forEach(dateSource -> {
logger.info("++++++++++++" + dateSource.get("poolName") + "++++客户主数据开始++++++++++");
DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key
sapCustom.setBukrs(dateSource.get("poolName").replace("ds_", ""));//工厂
Date maxTime0 = sapBomMapper.getCustomMaxTime();
try {
dateSources.forEach(dateSource -> {
logger.info("++++++++++++" + dateSource.get("poolName") + "++++客户主数据开始++++++++++");
DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key
sapCustom.setBukrs(dateSource.get("poolName").replace("ds_", ""));//工厂
Date maxTime0 = sapBomMapper.getCustomMaxTime();
if (maxTime0 != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(maxTime0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date maxTime = calendar.getTime();
sapCustom.setErdat(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923
}
R r = sapWorkCenterService.sapCustomSync(sapCustom);
if (r.getCode() == 200) {
List<SapCustom> dtos = (List<SapCustom>) r.getData();
if (!CollectionUtils.isEmpty(dtos)) {
sapWorkCenterService.syncCustom(dtos);
if (maxTime0 != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(maxTime0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date maxTime = calendar.getTime();
sapCustom.setErdat(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923
}
} else {
logger.error("++++++++++++" + dateSource.get("poolName") + "错误信息:" + r.getMsg());
}
logger.error("++++++++++++" + dateSource.get("poolName") + "++++客户主数据结束++++++++++");
});
R r = sapWorkCenterService.sapCustomSync(sapCustom);
if (r.getCode() == 200) {
List<SapCustom> dtos = (List<SapCustom>) r.getData();
if (!CollectionUtils.isEmpty(dtos)) {
sapWorkCenterService.syncCustom(dtos);
}
} else {
logger.error("++++++++++++" + dateSource.get("poolName") + "错误信息:" + r.getMsg());
}
logger.error("++++++++++++" + dateSource.get("poolName") + "++++客户主数据结束++++++++++");
});
}finally {
DynamicDataSourceContextHolder.poll();
}
return R.ok();
}

@ -252,51 +252,56 @@ public class SapBomServiceImpl implements SapBomService {
public void createBOM(List<SapBom> sapBomList, List<SapBomComponent> sapBomComponentList) {
List<SapBom> newBomList = sapBomList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SapBom::getBomCode))), ArrayList::new));
if (newBomList.size() > 0) {
DynamicDataSourceContextHolder.push("ds_1000");
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for (SapBom sapBom : newBomList) {
List<SapBomComponent> sapBomComponents;
//查询Bom号是否存在
SapBom bomModel = this.getMaxRevisionBom(sapBom.getBomCode());
//存在且版本号大于现有版本
if (bomModel != null && sapBom.getOptionalBom() != null && Float.parseFloat(sapBom.getOptionalBom()) > Float.parseFloat(bomModel.getOptionalBom())) {
//升级BOM
String bomBo = HandleEnum.BOM.getHandle(sapBom.getFactoryCode(), sapBom.getBomCode(), sapBom.getOptionalBom());
sapBom.setBomBo(bomBo);
//插入BOM表
sapBomMapper.insertBaseBom(sapBom);
//筛选组件清单
sapBomComponents = sapBomComponentList.stream().filter(sbc ->
sbc.getBomCode().equals(sapBom.getBomCode())).collect(Collectors.toList());
//执行插入
sapBomComponents.stream().forEach(components -> {
components.setBomBo(bomBo);
sapBomComponentMapper.insertSapBomComponent(components);
});
DynamicDataSourceContextHolder.push("ds_1000");
try {
if (newBomList.size() > 0) {
} else if (bomModel == null && sapBom.getOptionalBom() != null) {
//插入初始BOM
String bomBo = HandleEnum.BOM.getHandle(sapBom.getFactoryCode(), sapBom.getBomCode(), sapBom.getOptionalBom());
sapBom.setBomBo(bomBo);
//插入BOM表
sapBomMapper.insertBaseBom(sapBom);
//筛选组件清单
sapBomComponents = sapBomComponentList.stream().filter(sbc ->
sbc.getBomCode().equals(sapBom.getBomCode())).collect(Collectors.toList());
//执行插入
sapBomComponents.stream().forEach(components -> {
components.setBomBo(bomBo);
sapBomComponentMapper.insertSapBomComponent(components);
});
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for (SapBom sapBom : newBomList) {
List<SapBomComponent> sapBomComponents;
//查询Bom号是否存在
SapBom bomModel = this.getMaxRevisionBom(sapBom.getBomCode());
//存在且版本号大于现有版本
if (bomModel != null && sapBom.getOptionalBom() != null && Float.parseFloat(sapBom.getOptionalBom()) > Float.parseFloat(bomModel.getOptionalBom())) {
//升级BOM
String bomBo = HandleEnum.BOM.getHandle(sapBom.getFactoryCode(), sapBom.getBomCode(), sapBom.getOptionalBom());
sapBom.setBomBo(bomBo);
//插入BOM表
sapBomMapper.insertBaseBom(sapBom);
//筛选组件清单
sapBomComponents = sapBomComponentList.stream().filter(sbc ->
sbc.getBomCode().equals(sapBom.getBomCode())).collect(Collectors.toList());
//执行插入
sapBomComponents.stream().forEach(components -> {
components.setBomBo(bomBo);
sapBomComponentMapper.insertSapBomComponent(components);
});
} else if (bomModel == null && sapBom.getOptionalBom() != null) {
//插入初始BOM
String bomBo = HandleEnum.BOM.getHandle(sapBom.getFactoryCode(), sapBom.getBomCode(), sapBom.getOptionalBom());
sapBom.setBomBo(bomBo);
//插入BOM表
sapBomMapper.insertBaseBom(sapBom);
//筛选组件清单
sapBomComponents = sapBomComponentList.stream().filter(sbc ->
sbc.getBomCode().equals(sapBom.getBomCode())).collect(Collectors.toList());
//执行插入
sapBomComponents.stream().forEach(components -> {
components.setBomBo(bomBo);
sapBomComponentMapper.insertSapBomComponent(components);
});
}
sqlSession.commit();
sqlSession.clearCache();
}
sqlSession.commit();
sqlSession.clearCache();
}
}finally {
DynamicDataSourceContextHolder.poll();
}
}
}

@ -217,6 +217,8 @@ public class SapItemSyncImpl implements SapItemSyncService {
return R.ok();
} catch (Exception e) {
return R.fail(e.getMessage());
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@ -349,48 +351,54 @@ public class SapItemSyncImpl implements SapItemSyncService {
public String importProducts(List<SapBaseProduct> sapBaseProductList,String factoryCode) {
if (StringUtils.isNull(sapBaseProductList) || sapBaseProductList.size() == 0) {
throw new ServiceException("同步物料数据为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
DynamicDataSourceContextHolder.push("ds_"+factoryCode);
for (SapBaseProduct sapBaseProduct : sapBaseProductList) {
try {
// 验证是否存在这个物料
SapBaseProduct u = sapBaseProductMapper.selectBaseProductByProductCode(sapBaseProduct);
if (StringUtils.isNull(u)) {
BeanValidators.validateWithException(validator, sapBaseProduct);
sapBaseProduct.setCreateBy("job");
sapBaseProduct.setCreateTime(DateUtils.getNowDate());
sapBaseProductMapper.insertBaseProduct(sapBaseProduct);
successNum++;
successMsg.append("<br/>" + successNum + "、物料 " + sapBaseProduct.getProductCode() + " 同步成功");
} else if (!StringUtils.isNull(u)) {
sapBaseProduct.setProductId(u.getProductId());
sapBaseProduct.setUpdateBy("job");
sapBaseProduct.setUpdateTime(DateUtils.getNowDate());
sapBaseProductMapper.updateBaseProduct(sapBaseProduct);
successNum++;
successMsg.append("<br/>" + successNum + "、物料 " + sapBaseProduct.getProductCode() + " 更新成功");
}
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、物料 " + sapBaseProduct.getProductCode() + " 同步失败:";
failureMsg.append(msg + e.getMessage());
log.error(msg, e);
try {
if (StringUtils.isNull(sapBaseProductList) || sapBaseProductList.size() == 0) {
throw new ServiceException("同步物料数据为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
for (SapBaseProduct sapBaseProduct : sapBaseProductList) {
try {
// 验证是否存在这个物料
SapBaseProduct u = sapBaseProductMapper.selectBaseProductByProductCode(sapBaseProduct);
if (StringUtils.isNull(u)) {
BeanValidators.validateWithException(validator, sapBaseProduct);
sapBaseProduct.setCreateBy("job");
sapBaseProduct.setCreateTime(DateUtils.getNowDate());
sapBaseProductMapper.insertBaseProduct(sapBaseProduct);
successNum++;
successMsg.append("<br/>" + successNum + "、物料 " + sapBaseProduct.getProductCode() + " 同步成功");
} else if (!StringUtils.isNull(u)) {
sapBaseProduct.setProductId(u.getProductId());
sapBaseProduct.setUpdateBy("job");
sapBaseProduct.setUpdateTime(DateUtils.getNowDate());
sapBaseProductMapper.updateBaseProduct(sapBaseProduct);
successNum++;
successMsg.append("<br/>" + successNum + "、物料 " + sapBaseProduct.getProductCode() + " 更新成功");
}
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、物料 " + sapBaseProduct.getProductCode() + " 同步失败:";
failureMsg.append(msg + e.getMessage());
log.error(msg, e);
}
}
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,同步失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据已全部同步成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}finally {
DynamicDataSourceContextHolder.poll();
}
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,同步失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据已全部同步成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
@Override
@ -1365,6 +1373,8 @@ public class SapItemSyncImpl implements SapItemSyncService {
} catch (Exception e) {
log.error(e.getMessage());
return R.fail(e.getMessage());
}finally {
DynamicDataSourceContextHolder.poll();
}
}

@ -52,20 +52,22 @@ public class SapRouterServiceImpl implements SapRouterService {
@Override
public R sapRouterSync(SapRouterQuery sapRouterQuery) {
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
DynamicDataSourceContextHolder.push("ds_"+sapRouterQuery.getWerks());
try {
// 获取调用 RFC 函数对象
//获取连接
// JCoDestination dest = SAPConnUtils.connect();
JCoRepository repository = dest.getRepository();
JCoFunction func = repository.getFunction("ZPPR_MES_ROUTING");
if (func == null) {
throw new RuntimeException("Function does not exist in SAP");
}
// 配置传入参数
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
try {
// 获取调用 RFC 函数对象
//获取连接
// JCoDestination dest = SAPConnUtils.connect();
JCoRepository repository = dest.getRepository();
JCoFunction func = repository.getFunction("ZPPR_MES_ROUTING");
if (func == null) {
throw new RuntimeException("Function does not exist in SAP");
}
// 配置传入参数
/*
S_MATNR
S_WERKS
@ -74,170 +76,214 @@ public class SapRouterServiceImpl implements SapRouterService {
S_AEDAT
*/
log.info("工艺路线同步入参-------" + sapRouterQuery.toString());
if (sapRouterQuery.getMatnr()!=null&&sapRouterQuery.getMatnr().size()>0) {
JCoTable S_MATNR = func.getTableParameterList().getTable("S_MATNR");
for (String matnr:sapRouterQuery.getMatnr()){
S_MATNR.appendRow();
S_MATNR.setValue("SIGN", "I");
S_MATNR.setValue("OPTION", "EQ");
S_MATNR.setValue("LOW", matnr);
log.info("工艺路线同步入参-------" + sapRouterQuery.toString());
if (sapRouterQuery.getMatnr()!=null&&sapRouterQuery.getMatnr().size()>0) {
JCoTable S_MATNR = func.getTableParameterList().getTable("S_MATNR");
for (String matnr:sapRouterQuery.getMatnr()){
S_MATNR.appendRow();
S_MATNR.setValue("SIGN", "I");
S_MATNR.setValue("OPTION", "EQ");
S_MATNR.setValue("LOW", matnr);
}
}
}
if (!StringUtils.isNull(sapRouterQuery.getWerks())) {
JCoTable S_WERKS = func.getTableParameterList().getTable("S_WERKS");
S_WERKS.appendRow();
S_WERKS.setValue("SIGN", "I");
S_WERKS.setValue("OPTION", "EQ");
S_WERKS.setValue("LOW", sapRouterQuery.getWerks());
}
if (!StringUtils.isNull(sapRouterQuery.getArbpl())) {
JCoTable S_ARBPL = func.getTableParameterList().getTable("S_ARBPL");
S_ARBPL.appendRow();
S_ARBPL.setValue("SIGN", "I");
S_ARBPL.setValue("OPTION", "EQ");
S_ARBPL.setValue("LOW", sapRouterQuery.getArbpl());
}
if (!StringUtils.isNull(sapRouterQuery.getAndat())) {
JCoTable S_ANDAT = func.getTableParameterList().getTable("S_ANDAT");
S_ANDAT.appendRow();
S_ANDAT.setValue("SIGN", "I");
S_ANDAT.setValue("OPTION", "BT");
S_ANDAT.setValue("LOW", sapRouterQuery.getAndat());
S_ANDAT.setValue("HIGH", END_DATE);
}
if (!StringUtils.isNull(sapRouterQuery.getAedat())) {
JCoTable S_AEDAT = func.getTableParameterList().getTable("S_AEDAT");
S_AEDAT.appendRow();
S_AEDAT.setValue("SIGN", "I");
S_AEDAT.setValue("OPTION", "BT");
S_AEDAT.setValue("LOW", sapRouterQuery.getAedat());
S_AEDAT.setValue("HIGH", END_DATE);
}
System.out.println(func.getTableParameterList().getTable("S_MATNR"));
func.execute(dest);//执行调用函数
// 获取 内表 - ZMES_PRO
JCoTable maraTable = func.getTableParameterList().getTable("LT_ROUTING");
// System.out.println("###" + metaData.toString());
List<SapProRoute> sapProRouteList = new ArrayList<>();
DynamicDataSourceContextHolder.push("ds_"+sapRouterQuery.getWerks());
for (int i = 0; i < maraTable.getNumRows(); i++) {
SapProProcess sapProProcess = new SapProProcess();
maraTable.setRow(i);
String WERKS = maraTable.getString("WERKS");
String PLNTY = maraTable.getString("PLNTY");
String PLNNR = maraTable.getString("PLNNR");
String PLNAL = maraTable.getString("PLNAL");
String LOEKZ = maraTable.getString("LOEKZ");
String MATNR = maraTable.getString("MATNR");
String MAKTX = maraTable.getString("MAKTX");
String VERWE = maraTable.getString("VERWE");
String STATU = maraTable.getString("STATU");
String LOSVN = maraTable.getString("LOSVN");
String LOSBS = maraTable.getString("LOSBS");
String KTEXT = maraTable.getString("KTEXT");
String VORNR = maraTable.getString("VORNR");
String STEUS = maraTable.getString("STEUS");
String KTSCH = maraTable.getString("KTSCH");
String LTXA1 = maraTable.getString("LTXA1");
String ANDAT = maraTable.getString("ANDAT");
String ANNAM = maraTable.getString("ANNAM");
String AEDAT = maraTable.getString("AEDAT");
String AENAM = maraTable.getString("AENAM");
String ARBPL = maraTable.getString("ARBPL");
String UMREN = maraTable.getString("UMREN");
String UMREZ = maraTable.getString("UMREZ");
String BMSCH = maraTable.getString("BMSCH");
String MEINH = maraTable.getString("MEINH");
String LAR01 = maraTable.getString("LAR01");
String VGW01 = maraTable.getString("VGW01");
String VGE01 = maraTable.getString("VGE01");
String VGW02 = maraTable.getString("VGW02");
String VGE02 = maraTable.getString("VGE02");
String VGW03 = maraTable.getString("VGW03");
String VGE03 = maraTable.getString("VGE03");
String VGW04 = maraTable.getString("VGW04");
String VGE04 = maraTable.getString("VGE04");
String VGW05 = maraTable.getString("VGW05");
String VGE05 = maraTable.getString("VGE05");
String VGW06 = maraTable.getString("VGW06");
String VGE06 = maraTable.getString("VGE06");
String UEMUS = maraTable.getString("UEMUS");
String UEKAN = maraTable.getString("UEKAN");
String FLIES = maraTable.getString("FLIES");
String SPMUS = maraTable.getString("SPMUS");
String SPLIM = maraTable.getString("SPLIM");
String CKSELKZ = maraTable.getString("CKSELKZ");
log.info(
"工厂:" + WERKS +
"任务清单类型:" + PLNTY +
"任务清单组码:" + PLNNR +
"组计数器:" + PLNAL +
"删除标识:" + LOEKZ +
"物料号:" + MATNR +
"物料描述:" + MAKTX +
"任务清单使用:" + VERWE +
"状态:" + STATU +
"任务清单描述:" + KTEXT +
" 操作/活动编号:" + VORNR +
"控制码:" + STEUS +
"标准文本码" + KTSCH +
"工序短文本:" + LTXA1 +
"创建日期:" + ANDAT +
"创建者:" + ANNAM +
"更改日期:" + AEDAT +
"更改者:" + AENAM +
"工作中心:" + ARBPL +
"基本数量:" + BMSCH +
"工序计量单位:" + MEINH +
"标准值01机器" + VGW01 +
"计量单位01" + VGE01 +
"标准值02人工" + VGW02 +
"计量单位02" + VGE02 +
"标准值03折旧" + VGW03 +
"计量单位03" + VGE03 +
"标准值04其它" + VGW04 +
" 计量单位04" + VGE04);
// 工艺路线下的工序
if (StringUtil.isBlank(PLNNR)) {
throw new ServiceException("任务清单组码不能为空");
if (!StringUtils.isNull(sapRouterQuery.getWerks())) {
JCoTable S_WERKS = func.getTableParameterList().getTable("S_WERKS");
S_WERKS.appendRow();
S_WERKS.setValue("SIGN", "I");
S_WERKS.setValue("OPTION", "EQ");
S_WERKS.setValue("LOW", sapRouterQuery.getWerks());
}
// 验证是否存在这个工艺路线
SapProRoute sapProRoute = sapProRouteMapper.selectProRouteByRouteCode(PLNNR);
// 如果工艺路线不存在,直接插入
if (StringUtils.isNull(sapProRoute)) {
//验证是否存在工序
sapProProcess.setProcessName(LTXA1);
SapProProcess operation = sapProProcessMapper.selectProProcessByProcessName(sapProProcess);
//验证原材料是否存在
SapBaseProduct sapBaseProduct = new SapBaseProduct();
sapBaseProduct.setProductCode(MATNR);
sapBaseProduct = sapBaseProductMapper.selectBaseProductByProductCode(sapBaseProduct);
if (StringUtils.isNull(operation)) {
failureNum++;
failureMsg.append(failureNum + "、工艺路线【" + PLNNR + "】下的工序【" + LTXA1 + "】不存在!");
} else if (StringUtils.isNull(sapBaseProduct)) {
failureNum++;
failureMsg.append(failureNum + "、工艺路线【" + PLNNR + "】下的物料【" + MATNR + "】不存在!");
} else if (!StringUtils.isNull(operation) && !StringUtils.isNull(sapBaseProduct)) {
// BeanValidators.validateWithException(validator, sapProRoute);
//添加工艺路线
sapProRoute = new SapProRoute();
String routerid = IdUtils.fastSimpleUUID();
sapProRoute.setRouteId(routerid);
sapProRoute.setRouteCode(PLNNR);
sapProRoute.setProductCode(MATNR);
if (!StringUtils.isNull(sapRouterQuery.getArbpl())) {
JCoTable S_ARBPL = func.getTableParameterList().getTable("S_ARBPL");
S_ARBPL.appendRow();
S_ARBPL.setValue("SIGN", "I");
S_ARBPL.setValue("OPTION", "EQ");
S_ARBPL.setValue("LOW", sapRouterQuery.getArbpl());
}
if (!StringUtils.isNull(sapRouterQuery.getAndat())) {
JCoTable S_ANDAT = func.getTableParameterList().getTable("S_ANDAT");
S_ANDAT.appendRow();
S_ANDAT.setValue("SIGN", "I");
S_ANDAT.setValue("OPTION", "BT");
S_ANDAT.setValue("LOW", sapRouterQuery.getAndat());
S_ANDAT.setValue("HIGH", END_DATE);
}
if (!StringUtils.isNull(sapRouterQuery.getAedat())) {
JCoTable S_AEDAT = func.getTableParameterList().getTable("S_AEDAT");
S_AEDAT.appendRow();
S_AEDAT.setValue("SIGN", "I");
S_AEDAT.setValue("OPTION", "BT");
S_AEDAT.setValue("LOW", sapRouterQuery.getAedat());
S_AEDAT.setValue("HIGH", END_DATE);
}
System.out.println(func.getTableParameterList().getTable("S_MATNR"));
func.execute(dest);//执行调用函数
// 获取 内表 - ZMES_PRO
JCoTable maraTable = func.getTableParameterList().getTable("LT_ROUTING");
// System.out.println("###" + metaData.toString());
List<SapProRoute> sapProRouteList = new ArrayList<>();
for (int i = 0; i < maraTable.getNumRows(); i++) {
SapProProcess sapProProcess = new SapProProcess();
maraTable.setRow(i);
String WERKS = maraTable.getString("WERKS");
String PLNTY = maraTable.getString("PLNTY");
String PLNNR = maraTable.getString("PLNNR");
String PLNAL = maraTable.getString("PLNAL");
String LOEKZ = maraTable.getString("LOEKZ");
String MATNR = maraTable.getString("MATNR");
String MAKTX = maraTable.getString("MAKTX");
String VERWE = maraTable.getString("VERWE");
String STATU = maraTable.getString("STATU");
String LOSVN = maraTable.getString("LOSVN");
String LOSBS = maraTable.getString("LOSBS");
String KTEXT = maraTable.getString("KTEXT");
String VORNR = maraTable.getString("VORNR");
String STEUS = maraTable.getString("STEUS");
String KTSCH = maraTable.getString("KTSCH");
String LTXA1 = maraTable.getString("LTXA1");
String ANDAT = maraTable.getString("ANDAT");
String ANNAM = maraTable.getString("ANNAM");
String AEDAT = maraTable.getString("AEDAT");
String AENAM = maraTable.getString("AENAM");
String ARBPL = maraTable.getString("ARBPL");
String UMREN = maraTable.getString("UMREN");
String UMREZ = maraTable.getString("UMREZ");
String BMSCH = maraTable.getString("BMSCH");
String MEINH = maraTable.getString("MEINH");
String LAR01 = maraTable.getString("LAR01");
String VGW01 = maraTable.getString("VGW01");
String VGE01 = maraTable.getString("VGE01");
String VGW02 = maraTable.getString("VGW02");
String VGE02 = maraTable.getString("VGE02");
String VGW03 = maraTable.getString("VGW03");
String VGE03 = maraTable.getString("VGE03");
String VGW04 = maraTable.getString("VGW04");
String VGE04 = maraTable.getString("VGE04");
String VGW05 = maraTable.getString("VGW05");
String VGE05 = maraTable.getString("VGE05");
String VGW06 = maraTable.getString("VGW06");
String VGE06 = maraTable.getString("VGE06");
String UEMUS = maraTable.getString("UEMUS");
String UEKAN = maraTable.getString("UEKAN");
String FLIES = maraTable.getString("FLIES");
String SPMUS = maraTable.getString("SPMUS");
String SPLIM = maraTable.getString("SPLIM");
String CKSELKZ = maraTable.getString("CKSELKZ");
log.info(
"工厂:" + WERKS +
"任务清单类型:" + PLNTY +
"任务清单组码:" + PLNNR +
"组计数器:" + PLNAL +
"删除标识:" + LOEKZ +
"物料号:" + MATNR +
"物料描述:" + MAKTX +
"任务清单使用:" + VERWE +
"状态:" + STATU +
"任务清单描述:" + KTEXT +
" 操作/活动编号:" + VORNR +
"控制码:" + STEUS +
"标准文本码" + KTSCH +
"工序短文本:" + LTXA1 +
"创建日期:" + ANDAT +
"创建者:" + ANNAM +
"更改日期:" + AEDAT +
"更改者:" + AENAM +
"工作中心:" + ARBPL +
"基本数量:" + BMSCH +
"工序计量单位:" + MEINH +
"标准值01机器" + VGW01 +
"计量单位01" + VGE01 +
"标准值02人工" + VGW02 +
"计量单位02" + VGE02 +
"标准值03折旧" + VGW03 +
"计量单位03" + VGE03 +
"标准值04其它" + VGW04 +
" 计量单位04" + VGE04);
// 工艺路线下的工序
if (StringUtil.isBlank(PLNNR)) {
throw new ServiceException("任务清单组码不能为空");
}
// 验证是否存在这个工艺路线
SapProRoute sapProRoute = sapProRouteMapper.selectProRouteByRouteCode(PLNNR);
// 如果工艺路线不存在,直接插入
if (StringUtils.isNull(sapProRoute)) {
//验证是否存在工序
sapProProcess.setProcessName(LTXA1);
SapProProcess operation = sapProProcessMapper.selectProProcessByProcessName(sapProProcess);
//验证原材料是否存在
SapBaseProduct sapBaseProduct = new SapBaseProduct();
sapBaseProduct.setProductCode(MATNR);
sapBaseProduct = sapBaseProductMapper.selectBaseProductByProductCode(sapBaseProduct);
if (StringUtils.isNull(operation)) {
failureNum++;
failureMsg.append(failureNum + "、工艺路线【" + PLNNR + "】下的工序【" + LTXA1 + "】不存在!");
} else if (StringUtils.isNull(sapBaseProduct)) {
failureNum++;
failureMsg.append(failureNum + "、工艺路线【" + PLNNR + "】下的物料【" + MATNR + "】不存在!");
} else if (!StringUtils.isNull(operation) && !StringUtils.isNull(sapBaseProduct)) {
// BeanValidators.validateWithException(validator, sapProRoute);
//添加工艺路线
sapProRoute = new SapProRoute();
String routerid = IdUtils.fastSimpleUUID();
sapProRoute.setRouteId(routerid);
sapProRoute.setRouteCode(PLNNR);
sapProRoute.setProductCode(MATNR);
sapProRoute.setRouteName(KTEXT);
sapProRoute.setRouteDesc(KTEXT);
sapProRoute.setEnableFlag("Y");
sapProRoute.setCreateBy(ANNAM);
sapProRoute.setAttr1("job");//说明是来自定时任务
sapProRoute.setCreateTime(DateUtils.dateTime("yyyy-MM-dd", ANDAT));
sapProRoute.setRouteVersion("1.0");
//机器
sapProRoute.setTecMachine(VGW01);
sapProRoute.setTecMachineUnit(VGE01);
//人工
sapProRoute.setTecMan(VGW02);
sapProRoute.setTecManUnit(VGE02);
//折旧
sapProRoute.setTecDepreciation(VGW03);
sapProRoute.setTecDepreciationUnit(VGE03);
//其它
sapProRoute.setTecOther(VGW04);
sapProRoute.setTecOtherUnit(VGE04);
sapProRouteMapper.insertProRoute(sapProRoute);
//增加工艺路线和工序的关系
SapProRouteProcess sapProRouteProcess = new SapProRouteProcess();
sapProRouteProcess.setRecordId(IdUtils.fastSimpleUUID());
sapProRouteProcess.setRouteId(routerid);
sapProRouteProcess.setProcessId(operation.getProcessId());
sapProRouteProcess.setProcessCode(operation.getProcessCode());
sapProRouteProcess.setProcessName(operation.getProcessName());
sapProRouteProcess.setOrderNum(1);
sapProRouteProcess.setCreateTime(DateUtils.dateTime("yyyy-MM-dd", ANDAT));
sapProRouteProcess.setCreateBy(ANNAM);
sapProRouteProcessMapper.insertProRouteProcess(sapProRouteProcess);
//增加与产品的关系
SapProRouteProduct sapProRouteProduct = new SapProRouteProduct();
sapProRouteProduct.setRecordId(IdUtils.fastSimpleUUID());
sapProRouteProduct.setRouteId(routerid);
sapProRouteProduct.setItemId(sapBaseProduct.getProductId());
sapProRouteProduct.setItemCode(MATNR);
sapProRouteProduct.setItemName(sapBaseProduct.getProductDescZh());
sapProRouteProduct.setCreateBy(ANNAM);
sapProRouteProduct.setCreateTime(DateUtils.dateTime("yyyy-MM-dd", ANDAT));
sapProRouteProductMapper.insertProRouteProduct(sapProRouteProduct);
successNum++;
}
}
//更新工艺路线
else {
sapProRoute.setRouteName(KTEXT);
sapProRoute.setProductCode(MATNR);
sapProRoute.setRouteDesc(KTEXT);
sapProRoute.setEnableFlag("Y");
sapProRoute.setCreateBy(ANNAM);
sapProRoute.setAttr1("job");//说明是来自定时任务
sapProRoute.setCreateTime(DateUtils.dateTime("yyyy-MM-dd", ANDAT));
sapProRoute.setRouteVersion("1.0");
//机器
sapProRoute.setTecMachine(VGW01);
sapProRoute.setTecMachineUnit(VGE01);
@ -250,68 +296,27 @@ public class SapRouterServiceImpl implements SapRouterService {
//其它
sapProRoute.setTecOther(VGW04);
sapProRoute.setTecOtherUnit(VGE04);
sapProRouteMapper.insertProRoute(sapProRoute);
//增加工艺路线和工序的关系
SapProRouteProcess sapProRouteProcess = new SapProRouteProcess();
sapProRouteProcess.setRecordId(IdUtils.fastSimpleUUID());
sapProRouteProcess.setRouteId(routerid);
sapProRouteProcess.setProcessId(operation.getProcessId());
sapProRouteProcess.setProcessCode(operation.getProcessCode());
sapProRouteProcess.setProcessName(operation.getProcessName());
sapProRouteProcess.setOrderNum(1);
sapProRouteProcess.setCreateTime(DateUtils.dateTime("yyyy-MM-dd", ANDAT));
sapProRouteProcess.setCreateBy(ANNAM);
sapProRouteProcessMapper.insertProRouteProcess(sapProRouteProcess);
//增加与产品的关系
SapProRouteProduct sapProRouteProduct = new SapProRouteProduct();
sapProRouteProduct.setRecordId(IdUtils.fastSimpleUUID());
sapProRouteProduct.setRouteId(routerid);
sapProRouteProduct.setItemId(sapBaseProduct.getProductId());
sapProRouteProduct.setItemCode(MATNR);
sapProRouteProduct.setItemName(sapBaseProduct.getProductDescZh());
sapProRouteProduct.setCreateBy(ANNAM);
sapProRouteProduct.setCreateTime(DateUtils.dateTime("yyyy-MM-dd", ANDAT));
sapProRouteProductMapper.insertProRouteProduct(sapProRouteProduct);
successNum++;
sapProRoute.setUpdateBy(ANNAM);
sapProRoute.setUpdateTime(DateUtils.getNowDate());
sapProRouteMapper.updateProRoute(sapProRoute);
}
}
//更新工艺路线
else {
sapProRoute.setRouteName(KTEXT);
sapProRoute.setProductCode(MATNR);
sapProRoute.setRouteDesc(KTEXT);
sapProRoute.setEnableFlag("Y");
//机器
sapProRoute.setTecMachine(VGW01);
sapProRoute.setTecMachineUnit(VGE01);
//人工
sapProRoute.setTecMan(VGW02);
sapProRoute.setTecManUnit(VGE02);
//折旧
sapProRoute.setTecDepreciation(VGW03);
sapProRoute.setTecDepreciationUnit(VGE03);
//其它
sapProRoute.setTecOther(VGW04);
sapProRoute.setTecOtherUnit(VGE04);
sapProRoute.setUpdateBy(ANNAM);
sapProRoute.setUpdateTime(DateUtils.getNowDate());
sapProRouteMapper.updateProRoute(sapProRoute);
}
}
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,同步失败!共 " + failureNum + " 工艺路线异常");
log.error(failureMsg.toString());
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据同步成功!共 " + successNum + " 条");
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,同步失败!共 " + failureNum + " 工艺路线异常");
log.error(failureMsg.toString());
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据同步成功!共 " + successNum + " 条");
}
} catch (Exception e) {
log.error(e.getMessage());
return R.fail(e.getMessage());
}
} catch (Exception e) {
log.error(e.getMessage());
return R.fail(e.getMessage());
return R.ok(successMsg.toString());
}finally {
DynamicDataSourceContextHolder.poll();
}
return R.ok(successMsg.toString());
}
}

@ -138,14 +138,24 @@ public class BaseAreaServiceImpl implements IBaseAreaService {
@Override
public List<BaseArea> selectBaseAreaListSC(BaseArea baseArea) {
DynamicDataSourceContextHolder.push("ds_" + baseArea.getFactoryCode());
return baseAreaMapper.selectBaseAreaList(baseArea);
try {
return baseAreaMapper.selectBaseAreaList(baseArea);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
public BaseWarehouse listTableCK(BaseArea baseArea) {
DynamicDataSourceContextHolder.push("ds_" + baseArea.getFactoryCode());
BaseWarehouse baseWarehouse= baseAreaMapper.selectBaseWarehouse(baseArea);
return baseWarehouse;
try {
BaseWarehouse baseWarehouse= baseAreaMapper.selectBaseWarehouse(baseArea);
return baseWarehouse;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
}

@ -149,6 +149,11 @@ public class BaseWarehouseServiceImpl implements IBaseWarehouseService {
@Override
public List<BaseWarehouse> selectBaseWarehouseListTWO(BaseWarehouse baseWarehouse) {
DynamicDataSourceContextHolder.push("ds_" + baseWarehouse.getFactoryCode());
return baseWarehouseMapper.selectBaseWarehouseList(baseWarehouse);
try {
return baseWarehouseMapper.selectBaseWarehouseList(baseWarehouse);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
}

@ -171,7 +171,12 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
// @DS("#header.poolName")
public List<OdsProcureOrder> PurchaseOrderPda(OdsProcureOrder odsProcureOrder) {
DynamicDataSourceContextHolder.push("ds_" + odsProcureOrder.getFactoryCode());
return odsProcureOrderMapper.selectOdsProcureOrderList(odsProcureOrder);
try {
return odsProcureOrderMapper.selectOdsProcureOrderList(odsProcureOrder);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
@ -179,62 +184,71 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
public int PurchaseOrderdeliPda(OdsProcureOrder odsProcureOrder) {
//收货记录rawOrderInSnId。修改收货数量-------------
DynamicDataSourceContextHolder.push("ds_" + odsProcureOrder.getFactoryCode());
//--receiptNoCode收货单号
OdsProcureOrder order = odsProcureOrderMapper.selectOdsProcureOrderByID(odsProcureOrder.getID());
//wms_raw_order_in_sn
WmsRawOrderInSn wmsRawOrderInSn = new WmsRawOrderInSn();
wmsRawOrderInSn.setRawOrderInSnId(IdUtils.fastSimpleUUID());
wmsRawOrderInSn.setUserDefined1("1");//1是收货,2是入库
wmsRawOrderInSn.setUserDefined2(order.getUserDefined7());//批次
wmsRawOrderInSn.setWhCode(odsProcureOrder.getWhCode());//厂库编号
wmsRawOrderInSn.setWaCode(odsProcureOrder.getWaCode());
wmsRawOrderInSn.setWlCode("00001-1-01");//先都设置为同一个库位
wmsRawOrderInSn.setPoNo(order.getProcureCode());//采购单号
wmsRawOrderInSn.setPoLine(odsProcureOrder.getPoLine());//行项目
wmsRawOrderInSn.setMaterialCode(odsProcureOrder.getMaterialCode());
wmsRawOrderInSn.setMaterialDesc(odsProcureOrder.getMaterialDesc());
wmsRawOrderInSn.setAmount(odsProcureOrder.getPlanNumber());
wmsRawOrderInSn.setFactoryCode(odsProcureOrder.getFactoryCode());
wmsRawOrderInSn.setCreateBy(odsProcureOrder.getCreateBy());
wmsRawOrderInSn.setGmtCreate(new Date());
wmsRawOrderInSn.setActiveFlag("1");
wmsRawOrderInSn.setUserDefined4(order.getUnit());//单位
wmsRawOrderInSn.setSn(odsProcureOrder.getSn());//托盘号
wmsRawOrderInSn.setFactoryCode(odsProcureOrder.getSiteCode());
wmsRawOrderInSn.setUserDefined3(order.getID());
wmsRawOrderInSn.setUserDefined5(odsProcureOrder.getReceiptNoCode());
wmsRawOrderInSn.setUserDefined6(odsProcureOrder.getUserDefined6());//标识码绑定
try {
//--receiptNoCode收货单号
OdsProcureOrder order = odsProcureOrderMapper.selectOdsProcureOrderByID(odsProcureOrder.getID());
//wms_raw_order_in_sn
WmsRawOrderInSn wmsRawOrderInSn = new WmsRawOrderInSn();
wmsRawOrderInSn.setRawOrderInSnId(IdUtils.fastSimpleUUID());
wmsRawOrderInSn.setUserDefined1("1");//1是收货,2是入库
wmsRawOrderInSn.setUserDefined2(order.getUserDefined7());//批次
wmsRawOrderInSn.setWhCode(odsProcureOrder.getWhCode());//厂库编号
wmsRawOrderInSn.setWaCode(odsProcureOrder.getWaCode());
wmsRawOrderInSn.setWlCode("00001-1-01");//先都设置为同一个库位
wmsRawOrderInSn.setPoNo(order.getProcureCode());//采购单号
wmsRawOrderInSn.setPoLine(odsProcureOrder.getPoLine());//行项目
wmsRawOrderInSn.setMaterialCode(odsProcureOrder.getMaterialCode());
wmsRawOrderInSn.setMaterialDesc(odsProcureOrder.getMaterialDesc());
wmsRawOrderInSn.setAmount(odsProcureOrder.getPlanNumber());
wmsRawOrderInSn.setFactoryCode(odsProcureOrder.getFactoryCode());
wmsRawOrderInSn.setCreateBy(odsProcureOrder.getCreateBy());
wmsRawOrderInSn.setGmtCreate(new Date());
wmsRawOrderInSn.setActiveFlag("1");
wmsRawOrderInSn.setUserDefined4(order.getUnit());//单位
wmsRawOrderInSn.setSn(odsProcureOrder.getSn());//托盘号
wmsRawOrderInSn.setFactoryCode(odsProcureOrder.getSiteCode());
wmsRawOrderInSn.setUserDefined3(order.getID());
wmsRawOrderInSn.setUserDefined5(odsProcureOrder.getReceiptNoCode());
wmsRawOrderInSn.setUserDefined6(odsProcureOrder.getUserDefined6());//标识码绑定
wmsRawOrderInSnMapper.insertWmsRawOrderInSn(wmsRawOrderInSn);
//标识码绑定
if (odsProcureOrder.getUserDefined6()!=null){
WmsLogotypeTable wmsLogotypeTable=new WmsLogotypeTable();
wmsLogotypeTable.setId(IdUtils.fastSimpleUUID());
wmsLogotypeTable.setLogotype(odsProcureOrder.getUserDefined6());
wmsLogotypeTable.setSn(odsProcureOrder.getSn());
wmsLogotypeTable.setActiveFlag("1");
wmsRawOrderInSnMapper.insertWmsLogotypeTable(wmsLogotypeTable);
}
wmsRawOrderInSnMapper.insertWmsRawOrderInSn(wmsRawOrderInSn);
//标识码绑定
if (odsProcureOrder.getUserDefined6()!=null){
WmsLogotypeTable wmsLogotypeTable=new WmsLogotypeTable();
wmsLogotypeTable.setId(IdUtils.fastSimpleUUID());
wmsLogotypeTable.setLogotype(odsProcureOrder.getUserDefined6());
wmsLogotypeTable.setSn(odsProcureOrder.getSn());
wmsLogotypeTable.setActiveFlag("1");
wmsRawOrderInSnMapper.insertWmsLogotypeTable(wmsLogotypeTable);
}
//插入收货记录
//如果收货完成了的话,就插入信息收货完成
odsProcureOrder.setOrderStatus("1");
BigDecimal result = order.getRealityNumber().add(odsProcureOrder.getPlanNumber());
if (result.equals(order.getPlanNumber())) {
odsProcureOrder.setOrderStatus("2");//
//插入收货记录
//如果收货完成了的话,就插入信息收货完成
odsProcureOrder.setOrderStatus("1");
BigDecimal result = order.getRealityNumber().add(odsProcureOrder.getPlanNumber());
if (result.equals(order.getPlanNumber())) {
odsProcureOrder.setOrderStatus("2");//
}
Integer tem = odsProcureOrderMapper.updateRealityNuById(odsProcureOrder);
//插入检验集计划
return tem;
}finally {
DynamicDataSourceContextHolder.poll();
}
Integer tem = odsProcureOrderMapper.updateRealityNuById(odsProcureOrder);
//插入检验集计划
return tem;
}
@Override
//@DS("#header.poolName")
public List<WmsRawOrderInSn> PurchaseOrderdetailPda(WmsRawOrderInSn wmsRawOrderInSn) {
DynamicDataSourceContextHolder.push("ds_" + wmsRawOrderInSn.getFactoryCode());
wmsRawOrderInSn.setActiveFlag("1");
//u3备注
return wmsRawOrderInSnMapper.selectWmsRawOrderInSnList(wmsRawOrderInSn);
try {
wmsRawOrderInSn.setActiveFlag("1");
//u3备注
return wmsRawOrderInSnMapper.selectWmsRawOrderInSnList(wmsRawOrderInSn);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
@ -675,42 +689,47 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
@Override
public AjaxResult sapPurchaseOrderSync(OdsProcureOrder odsProcureOrder) {
DynamicDataSourceContextHolder.push("ds_" + odsProcureOrder.getFactoryCode());
SapPurchaseOrderQuery sapPurchaseOrderQuery = new SapPurchaseOrderQuery();
sapPurchaseOrderQuery.setEbeln(odsProcureOrder.getProcureCode());//采购单号
R result = remoteSapService.sapPurchaseOrderSync(sapPurchaseOrderQuery);
List<Map<String, String>> mapList = new ArrayList<>();
mapList = (List<Map<String, String>>) result.getData();
for (Map<String, String> sapPurchaseOrderQuery1 : mapList) {
OdsProcureOrder order = new OdsProcureOrder();
order.setProcureCode(sapPurchaseOrderQuery1.get("ebeln"));
order.setSiteCode(sapPurchaseOrderQuery1.get("werks"));
order.setUserDefined3(sapPurchaseOrderQuery1.get("ebelp"));//批次
order.setMaterialCode(sapPurchaseOrderQuery1.get("matnr"));
order.setMaterialDesc(sapPurchaseOrderQuery1.get("maktx"));
order.setUserDefined8("1");
order.setActive("1");
List<OdsProcureOrder> orderList = odsProcureOrderMapper.selectOdsProcureOrderList(order);
if (orderList.size() > 0) {
continue;
try {
SapPurchaseOrderQuery sapPurchaseOrderQuery = new SapPurchaseOrderQuery();
sapPurchaseOrderQuery.setEbeln(odsProcureOrder.getProcureCode());//采购单号
R result = remoteSapService.sapPurchaseOrderSync(sapPurchaseOrderQuery);
List<Map<String, String>> mapList = new ArrayList<>();
mapList = (List<Map<String, String>>) result.getData();
for (Map<String, String> sapPurchaseOrderQuery1 : mapList) {
OdsProcureOrder order = new OdsProcureOrder();
order.setProcureCode(sapPurchaseOrderQuery1.get("ebeln"));
order.setSiteCode(sapPurchaseOrderQuery1.get("werks"));
order.setUserDefined3(sapPurchaseOrderQuery1.get("ebelp"));//批次
order.setMaterialCode(sapPurchaseOrderQuery1.get("matnr"));
order.setMaterialDesc(sapPurchaseOrderQuery1.get("maktx"));
order.setUserDefined8("1");
order.setActive("1");
List<OdsProcureOrder> orderList = odsProcureOrderMapper.selectOdsProcureOrderList(order);
if (orderList.size() > 0) {
continue;
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
Date date = new Date();
String formattedDate = dateFormat.format(date);
String userDefined7= odsProcureOrderMapper.selectOdsProcureOrderUserDefined7New(formattedDate);
order.setUserDefined7(userDefined7);
order.setPlanNumber(new BigDecimal(sapPurchaseOrderQuery1.get("menge")));
order.setUnit(sapPurchaseOrderQuery1.get("meins"));
order.setSupplierCode(sapPurchaseOrderQuery1.get("lifnr"));
order.setUserDefined9(sapPurchaseOrderQuery1.get("zmenge"));
order.setUserDefined10(sapPurchaseOrderQuery1.get("elikz"));
order.setUserDefined11(sapPurchaseOrderQuery1.get("eindt"));
order.setCreateBy(odsProcureOrder.getCreateBy());
order.setPlanDate(new Date());
order.setOrderStatus("0");
//order.setID(IdUtils.fastSimpleUUID());
order.setCreateDate(new Date());
odsProcureOrderMapper.insertOdsProcureOrder(order);
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
Date date = new Date();
String formattedDate = dateFormat.format(date);
String userDefined7= odsProcureOrderMapper.selectOdsProcureOrderUserDefined7New(formattedDate);
order.setUserDefined7(userDefined7);
order.setPlanNumber(new BigDecimal(sapPurchaseOrderQuery1.get("menge")));
order.setUnit(sapPurchaseOrderQuery1.get("meins"));
order.setSupplierCode(sapPurchaseOrderQuery1.get("lifnr"));
order.setUserDefined9(sapPurchaseOrderQuery1.get("zmenge"));
order.setUserDefined10(sapPurchaseOrderQuery1.get("elikz"));
order.setUserDefined11(sapPurchaseOrderQuery1.get("eindt"));
order.setCreateBy(odsProcureOrder.getCreateBy());
order.setPlanDate(new Date());
order.setOrderStatus("0");
//order.setID(IdUtils.fastSimpleUUID());
order.setCreateDate(new Date());
odsProcureOrderMapper.insertOdsProcureOrder(order);
}finally {
DynamicDataSourceContextHolder.poll();
}
return AjaxResult.success();
}
@ -942,62 +961,66 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
@Override
public AjaxResult getDeliveryNoteDetail(OdsProcureOrder odsProcureOrder) {
DynamicDataSourceContextHolder.push("ds_" + odsProcureOrder.getFactoryCode());
SapPurchaseOrderQuery sapPurchaseOrderQuery = new SapPurchaseOrderQuery();
sapPurchaseOrderQuery.setEbeln(odsProcureOrder.getProcureCode());//采购单号
//"ebelp": "10",
//代表是-00010
Map paramMap=new HashMap<>();
paramMap.put("id",odsProcureOrder.getUserDefined5());
AjaxResult result = remoteOpenService.getDeliveryNoteDetail(paramMap);
List<Map<String, String>> mapList = new ArrayList<>();
if (result.get("code").equals(200)) {
mapList= (List<Map<String, String>>) result.get("data");
for (Map<String, String> sapPurchaseOrderQuery1 : mapList) {
OdsProcureOrder order = new OdsProcureOrder();
// 获取 mainId
Object mainIdObj = sapPurchaseOrderQuery1.get("mainId");
try {
SapPurchaseOrderQuery sapPurchaseOrderQuery = new SapPurchaseOrderQuery();
sapPurchaseOrderQuery.setEbeln(odsProcureOrder.getProcureCode());//采购单号
//"ebelp": "10",
//代表是-00010
Map paramMap=new HashMap<>();
paramMap.put("id",odsProcureOrder.getUserDefined5());
AjaxResult result = remoteOpenService.getDeliveryNoteDetail(paramMap);
List<Map<String, String>> mapList = new ArrayList<>();
if (result.get("code").equals(200)) {
mapList= (List<Map<String, String>>) result.get("data");
for (Map<String, String> sapPurchaseOrderQuery1 : mapList) {
OdsProcureOrder order = new OdsProcureOrder();
// 获取 mainId
Object mainIdObj = sapPurchaseOrderQuery1.get("mainId");
// 将 Object 转换为 String
String mainId = (mainIdObj != null) ? mainIdObj.toString() : null;
String mainId = (mainIdObj != null) ? mainIdObj.toString() : null;
// 判断并补全 mainId
if (mainId != null && mainId.length() < 8) {
mainId = String.format("%08d", Integer.parseInt(mainId));
}
order.setProcureCode(sapPurchaseOrderQuery1.get("orderNum"));
order.setSiteCode(sapPurchaseOrderQuery1.get("werks"));
order.setUserDefined3(sapPurchaseOrderQuery1.get("ebelp"));//行项目
if (order.getUserDefined3()!=null){
order.setUserDefined3("000"+order.getUserDefined3());
if (mainId != null && mainId.length() < 8) {
mainId = String.format("%08d", Integer.parseInt(mainId));
}
order.setProcureCode(sapPurchaseOrderQuery1.get("orderNum"));
order.setSiteCode(sapPurchaseOrderQuery1.get("werks"));
order.setUserDefined3(sapPurchaseOrderQuery1.get("ebelp"));//行项目
if (order.getUserDefined3()!=null){
order.setUserDefined3("000"+order.getUserDefined3());
}
String materialCode = sapPurchaseOrderQuery1.get("matnr");
materialCode = "0000000" + materialCode;
order.setMaterialCode(materialCode);
order.setUserDefined5(mainId);//送货单
order.setMaterialDesc(sapPurchaseOrderQuery1.get("matnrName"));
order.setActive("1");
order.setUserDefined8("0");//0是属于送货单下的
List<OdsProcureOrder> orderList = odsProcureOrderMapper.selectOdsProcureOrderList(order);
if (orderList.size() > 0) {
//这个地方判断下是不是采购单已经被插入了,如果是的话,并且是走的送货单的路径,那就把送货单给她附上
continue;
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
Date date = new Date();
String formattedDate = dateFormat.format(date);
String userDefined7= odsProcureOrderMapper.selectOdsProcureOrderUserDefined7New(formattedDate);
// order.setUserDefined7(formattedDate+order.getUserDefined3());
order.setUserDefined7(userDefined7);
order.setUserDefined11(sapPurchaseOrderQuery1.get("realDate"));
order.setPlanNumber(new BigDecimal(sapPurchaseOrderQuery1.get("thisDeliNum")));
order.setUnit(sapPurchaseOrderQuery1.get("unit"));
order.setSupplierCode(sapPurchaseOrderQuery1.get("lifnr"));
order.setCreateBy(odsProcureOrder.getCreateBy());
order.setPlanDate(new Date());
order.setOrderStatus("0");
//order.setID(IdUtils.fastSimpleUUID());
order.setCreateDate(new Date());
odsProcureOrderMapper.insertOdsProcureOrder(order);
}
}
String materialCode = sapPurchaseOrderQuery1.get("matnr");
materialCode = "0000000" + materialCode;
order.setMaterialCode(materialCode);
order.setUserDefined5(mainId);//送货单
order.setMaterialDesc(sapPurchaseOrderQuery1.get("matnrName"));
order.setActive("1");
order.setUserDefined8("0");//0是属于送货单下的
List<OdsProcureOrder> orderList = odsProcureOrderMapper.selectOdsProcureOrderList(order);
if (orderList.size() > 0) {
//这个地方判断下是不是采购单已经被插入了,如果是的话,并且是走的送货单的路径,那就把送货单给她附上
continue;
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
Date date = new Date();
String formattedDate = dateFormat.format(date);
String userDefined7= odsProcureOrderMapper.selectOdsProcureOrderUserDefined7New(formattedDate);
// order.setUserDefined7(formattedDate+order.getUserDefined3());
order.setUserDefined7(userDefined7);
order.setUserDefined11(sapPurchaseOrderQuery1.get("realDate"));
order.setPlanNumber(new BigDecimal(sapPurchaseOrderQuery1.get("thisDeliNum")));
order.setUnit(sapPurchaseOrderQuery1.get("unit"));
order.setSupplierCode(sapPurchaseOrderQuery1.get("lifnr"));
order.setCreateBy(odsProcureOrder.getCreateBy());
order.setPlanDate(new Date());
order.setOrderStatus("0");
//order.setID(IdUtils.fastSimpleUUID());
order.setCreateDate(new Date());
odsProcureOrderMapper.insertOdsProcureOrder(order);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
return AjaxResult.success();
}
@ -1563,7 +1586,11 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
public String upbatCardXNew(OdsProcureOrder order) {
String result="修改成功";
DynamicDataSourceContextHolder.push("ds_" + order.getFactoryCode());
odsProcureOrderMapper.updateodsProcureOrderCardTemNumber(order);//更新标识卡。状态为1
try {
odsProcureOrderMapper.updateodsProcureOrderCardTemNumber(order);//更新标识卡。状态为1
}finally {
DynamicDataSourceContextHolder.poll();
}
return result;
}
@ -1796,8 +1823,13 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
//送货单,采购单,行项目,物料编码,物料名称,工厂号,托盘,状态,实际收货
DynamicDataSourceContextHolder.push("ds_" + odsProcureOrder.getFactoryCode());
List<OdsProcureOrder> orderList= odsProcureOrderMapper.selectOdsProcureOrderCardTLTWO(odsProcureOrder);
return orderList;
try {
List<OdsProcureOrder> orderList= odsProcureOrderMapper.selectOdsProcureOrderCardTLTWO(odsProcureOrder);
return orderList;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@ -1859,8 +1891,13 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
public OdsProcureOrder selectOrderCard(OdsProcureOrder odsProcureOrder) {
//送货单,采购单,行项目,物料编码,物料名称,工厂号,托盘,状态,实际收货
DynamicDataSourceContextHolder.push("ds_" + odsProcureOrder.getFactoryCode());
OdsProcureOrder order= odsProcureOrderMapper.selectOdsProcureOrderCard(odsProcureOrder);
return order;
try {
OdsProcureOrder order= odsProcureOrderMapper.selectOdsProcureOrderCard(odsProcureOrder);
return order;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
@ -2259,84 +2296,89 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
String result="操作成功";
String factoryCode = orderList.get(0).getFactoryCode();
DynamicDataSourceContextHolder.push("ds_" + factoryCode);
for (OdsProcureOutOrder odsProcureOutOrder :
orderList) {
//领料单,物料编号,领料单批次,物料名称,托盘号,出库数量,库位号,
String produceCode= odsProcureOutOrder.getProduceCode();//生产领料单号
String createBy= odsProcureOutOrder.getCreateBy();//操作人
String mateOrderInSnId= odsProcureOutOrder.getMateOrderInSnId();
String waCode= odsProcureOutOrder.getWaCode();
String whCode= odsProcureOutOrder.getWhCode();
String wlCode= odsProcureOutOrder.getWlCode();
String sn= odsProcureOutOrder.getSn();
String materialCode= odsProcureOutOrder.getMaterialCode();
String materialDesc= odsProcureOutOrder.getMaterialDesc();
BigDecimal amount= odsProcureOutOrder.getAmount();//数量
String userDefined1= odsProcureOutOrder.getUserDefined1();//单位
String userDefined2= odsProcureOutOrder.getUserDefined2();//批次
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = wmsOdsMateStorageNewsSnMapper.selectWmsOdsMateStorageNewsSnByMateOrderInSnIdk(mateOrderInSnId);
//wms_raw_mission_out--保存
//ods_procure_out_order--修改
WCSInventoryPlan wcsInventoryPlan = new WCSInventoryPlan();
wcsInventoryPlan.setSku(odsProcureOutOrder.getMaterialCode());
// WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectBaseProductByCode(wcsInventoryPlan);
OdsProcureOutOrder order = new OdsProcureOutOrder();
order.setProduceCode(produceCode);//领料单
order.setMaterialCode(materialCode);//
order.setMaterialDesc(materialDesc);
order.setUserDefined1(userDefined2);//批次
order.setUserDefined2(whCode);
order.setUserDefined3(wlCode);
order.setSn(sn);
order.setPlanNumber(amount);
order.setLocCode(waCode);//库区
order.setID(IdUtils.fastSimpleUUID());
order.setUnit(userDefined1);
order.setFactoryCode(factoryCode);
order.setActive("1");
order.setCreateBy(createBy);
order.setCreateDate(new Date());
//order.setSiteCode(factoryCode);}
OdsProcureOutOrder odsProcureOutOrder1=new OdsProcureOutOrder();
odsProcureOutOrder1.setProduceCode(produceCode);
odsProcureOutOrder1.setMaterialCode(materialCode);
List<OdsProcureOutOrder> odsProcureOutOrders = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrder(odsProcureOutOrder1);
OdsProcureOutOrder order1= odsProcureOutOrders.get(0);
order.setUserDefined4(order1.getUserDefined4());
odsProcureOutOrderMapper.insertWmsRawMissionOut(order);
try {
for (OdsProcureOutOrder odsProcureOutOrder :
orderList) {
//领料单,物料编号,领料单批次,物料名称,托盘号,出库数量,库位号,
String produceCode= odsProcureOutOrder.getProduceCode();//生产领料单号
String createBy= odsProcureOutOrder.getCreateBy();//操作人
String mateOrderInSnId= odsProcureOutOrder.getMateOrderInSnId();
String waCode= odsProcureOutOrder.getWaCode();
String whCode= odsProcureOutOrder.getWhCode();
String wlCode= odsProcureOutOrder.getWlCode();
String sn= odsProcureOutOrder.getSn();
String materialCode= odsProcureOutOrder.getMaterialCode();
String materialDesc= odsProcureOutOrder.getMaterialDesc();
BigDecimal amount= odsProcureOutOrder.getAmount();//数量
String userDefined1= odsProcureOutOrder.getUserDefined1();//单位
String userDefined2= odsProcureOutOrder.getUserDefined2();//批次
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = wmsOdsMateStorageNewsSnMapper.selectWmsOdsMateStorageNewsSnByMateOrderInSnIdk(mateOrderInSnId);
//wms_raw_mission_out--保存
//ods_procure_out_order--修改
WCSInventoryPlan wcsInventoryPlan = new WCSInventoryPlan();
wcsInventoryPlan.setSku(odsProcureOutOrder.getMaterialCode());
// WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectBaseProductByCode(wcsInventoryPlan);
OdsProcureOutOrder order = new OdsProcureOutOrder();
order.setProduceCode(produceCode);//领料单
order.setMaterialCode(materialCode);//
order.setMaterialDesc(materialDesc);
order.setUserDefined1(userDefined2);//批次
order.setUserDefined2(whCode);
order.setUserDefined3(wlCode);
order.setSn(sn);
order.setPlanNumber(amount);
order.setLocCode(waCode);//库区
order.setID(IdUtils.fastSimpleUUID());
order.setUnit(userDefined1);
order.setFactoryCode(factoryCode);
order.setActive("1");
order.setCreateBy(createBy);
order.setCreateDate(new Date());
//order.setSiteCode(factoryCode);}
OdsProcureOutOrder odsProcureOutOrder1=new OdsProcureOutOrder();
odsProcureOutOrder1.setProduceCode(produceCode);
odsProcureOutOrder1.setMaterialCode(materialCode);
List<OdsProcureOutOrder> odsProcureOutOrders = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrder(odsProcureOutOrder1);
OdsProcureOutOrder order1= odsProcureOutOrders.get(0);
order.setUserDefined4(order1.getUserDefined4());
odsProcureOutOrderMapper.insertWmsRawMissionOut(order);
BigDecimal realityNumber1 = order1.getOutNumber();//累出库数
BigDecimal realityNumber = order1.getPlanNumber();//计划
BigDecimal planNumber = amount;//本次实际数量
BigDecimal tem = realityNumber1.add(planNumber);
if (tem.compareTo(realityNumber)>= 0) {
order1.setOrderStatus("3");
} else {
order1.setOrderStatus("2");
}
order1.setOutNumber(tem);
odsProcureOutOrderMapper.updateWmsOdsProcureOutOrder(order1);//订单修改
//明细
BigDecimal realityNumber1 = order1.getOutNumber();//累出库数
BigDecimal realityNumber = order1.getPlanNumber();//计划
BigDecimal planNumber = amount;//本次实际数量
BigDecimal tem = realityNumber1.add(planNumber);
if (tem.compareTo(realityNumber)>= 0) {
order1.setOrderStatus("3");
} else {
order1.setOrderStatus("2");
}
order1.setOutNumber(tem);
odsProcureOutOrderMapper.updateWmsOdsProcureOutOrder(order1);//订单修改
//明细
// BigDecimal temk= wmsOdsMateStorageNewsSn.getAmount().subtract(amount);
wmsOdsMateStorageNewsSn.setOutNumber(amount);
wmsOdsMateStorageNewsSn.setLastModifiedBy(createBy);
wmsOdsMateStorageNewsSnMapper.updateWmsOdsMateStorageNewsSnAddoutNumber(wmsOdsMateStorageNewsSn);//库存明细
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
wmsOdsEmStorageNews.setWhCode(wmsOdsMateStorageNewsSn.getWhCode());//仓库编码
wmsOdsEmStorageNews.setWlCode(wmsOdsMateStorageNewsSn.getWlCode());//库位编码
wmsOdsEmStorageNews.setWaCode(wmsOdsMateStorageNewsSn.getWaCode());
wmsOdsEmStorageNews.setProductBatch(wmsOdsMateStorageNewsSn.getUserDefined2());
wmsOdsEmStorageNews.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode());
wmsOdsEmStorageNews.setAmount(odsProcureOutOrder.getPlanNumber());//库存
wmsOdsEmStorageNews.setLastModifiedBy(createBy);
wmsOdsMateStorageNewsSnMapper.updatekdd(wmsOdsEmStorageNews);//库存调整
}
//
OdsProcureOutOrder order=new OdsProcureOutOrder();
List<OdsProcureOutOrder> orderList1 = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrderByOrderStatus(order);
if (orderList1.size()>0){
OutboundPostingzcSAPGY(orderList1);
wmsOdsMateStorageNewsSn.setOutNumber(amount);
wmsOdsMateStorageNewsSn.setLastModifiedBy(createBy);
wmsOdsMateStorageNewsSnMapper.updateWmsOdsMateStorageNewsSnAddoutNumber(wmsOdsMateStorageNewsSn);//库存明细
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
wmsOdsEmStorageNews.setWhCode(wmsOdsMateStorageNewsSn.getWhCode());//仓库编码
wmsOdsEmStorageNews.setWlCode(wmsOdsMateStorageNewsSn.getWlCode());//库位编码
wmsOdsEmStorageNews.setWaCode(wmsOdsMateStorageNewsSn.getWaCode());
wmsOdsEmStorageNews.setProductBatch(wmsOdsMateStorageNewsSn.getUserDefined2());
wmsOdsEmStorageNews.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode());
wmsOdsEmStorageNews.setAmount(odsProcureOutOrder.getPlanNumber());//库存
wmsOdsEmStorageNews.setLastModifiedBy(createBy);
wmsOdsMateStorageNewsSnMapper.updatekdd(wmsOdsEmStorageNews);//库存调整
}
//
OdsProcureOutOrder order=new OdsProcureOutOrder();
List<OdsProcureOutOrder> orderList1 = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrderByOrderStatus(order);
if (orderList1.size()>0){
OutboundPostingzcSAPGY(orderList1);
}
}finally {
DynamicDataSourceContextHolder.poll();
}
return result;
}
@ -2583,225 +2625,231 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
@Override
public String addOrderCardX(List<OdsProcureOrder> orderList) {
String factoryCode = orderList.get(0).getFactoryCode();
String receiptNoCode = orderList.get(0).getReceiptNoCode();
//现在是传了个list标识卡集合
String result1="操作成功";
String factoryCode = orderList.get(0).getFactoryCode();
DynamicDataSourceContextHolder.push("ds_" + factoryCode);
//如果这样的话,就区分出来单子和对应的物料。然后根据集合放入暂收集合中
List<OdsProcureOrder> orderList1=new ArrayList<>();//
for (OdsProcureOrder order:
orderList) {
System.out.println(order.toString());
}
for (OdsProcureOrder order:
orderList) {
OdsProcureOrder order1= odsProcureOrderMapper.selectOdsProcureOrderCardByUserDefined1(order);
order.setUserDefined7(order1.getUserDefined7());//批次
order.setPoLine(order1.getUserDefined3());
order.setUnit(order1.getUnit());
order.setID(order1.getID());
if (orderList1.size()>0){
String tem="0";
for (OdsProcureOrder odsProcureOrder:orderList1){
if (odsProcureOrder.getID().equals(order1.getID())){
tem="1";//已经保存对应订单了
try {
String receiptNoCode = orderList.get(0).getReceiptNoCode();
//现在是传了个list标识卡集合
//如果这样的话,就区分出来单子和对应的物料。然后根据集合放入暂收集合中
List<OdsProcureOrder> orderList1=new ArrayList<>();//
for (OdsProcureOrder order:
orderList) {
System.out.println(order.toString());
}
for (OdsProcureOrder order:
orderList) {
OdsProcureOrder order1= odsProcureOrderMapper.selectOdsProcureOrderCardByUserDefined1(order);
order.setUserDefined7(order1.getUserDefined7());//批次
order.setPoLine(order1.getUserDefined3());
order.setUnit(order1.getUnit());
order.setID(order1.getID());
if (orderList1.size()>0){
String tem="0";
for (OdsProcureOrder odsProcureOrder:orderList1){
if (odsProcureOrder.getID().equals(order1.getID())){
tem="1";//已经保存对应订单了
}
}
}
if (tem.equals("0")){
if (tem.equals("0")){
orderList1.add(order1);
}
}else {
orderList1.add(order1);
}
}else {
orderList1.add(order1);
}
}
for (OdsProcureOrder odsProcureOrder:
orderList1) {
//单子
BigDecimal czNumber=new BigDecimal("0");
for ( OdsProcureOrder order :
orderList) {
if (order.getID().equals(odsProcureOrder.getID())){
czNumber=czNumber.add(order.getPlanNumber());
}
}
odsProcureOrder.setCzNumber(czNumber);
}
List<Map> mapList = new ArrayList<>();
for (OdsProcureOrder order :
orderList1) {
Map paramMap=new HashMap<>();
paramMap.put("EBELN",order.getProcureCode());//
paramMap.put("EBELP",order.getUserDefined3());//行项目
paramMap.put("MATNR",order.getMaterialCode());//物料
paramMap.put("WERKS",order.getSiteCode());//工厂
paramMap.put("QUANTITY",order.getCzNumber());//数量
paramMap.put("P_LFSNR",order.getUserDefined5());//送
mapList.add(paramMap);
}
R result2 = remoteSapService.temporarilyCollected(mapList);
int code = result2.getCode();
if (code == 200){
//对应采购单的标识卡
for (OdsProcureOrder order1k:
orderList) {
//标识卡信息
//wms_raw_order_in_sn
WmsRawOrderInSn wmsRawOrderInSn = new WmsRawOrderInSn();
wmsRawOrderInSn.setRawOrderInSnId(IdUtils.fastSimpleUUID());
wmsRawOrderInSn.setUserDefined1("1");//1是收货,2是入库
wmsRawOrderInSn.setUserDefined2(order1k.getUserDefined7());//批次
wmsRawOrderInSn.setWhCode(order1k.getWhCode());//厂库编号
wmsRawOrderInSn.setWaCode(order1k.getWaCode());
wmsRawOrderInSn.setWlCode(order1k.getSn());//库位设置为托盘
wmsRawOrderInSn.setPoNo(order1k.getProcureCode());//采购单号
wmsRawOrderInSn.setPoLine(order1k.getUserDefined3());//行项目
wmsRawOrderInSn.setMaterialCode(order1k.getMaterialCode());
wmsRawOrderInSn.setMaterialDesc(order1k.getMaterialDesc());
wmsRawOrderInSn.setAmount(order1k.getPlanNumber());//实际输入数量
wmsRawOrderInSn.setFactoryCode(order1k.getFactoryCode());
wmsRawOrderInSn.setCreateBy(order1k.getCreateBy());
wmsRawOrderInSn.setGmtCreate(new Date());
wmsRawOrderInSn.setActiveFlag("1");
wmsRawOrderInSn.setUserDefined4(order1k.getUnit());//单位
wmsRawOrderInSn.setSn(order1k.getSn());//托盘号
wmsRawOrderInSn.setFactoryCode(order1k.getFactoryCode());
wmsRawOrderInSn.setUserDefined3(order1k.getID());
wmsRawOrderInSn.setUserDefined5(order1k.getReceiptNoCode());
//wmsRawOrderInSn.setd
wmsRawOrderInSn.setUserDefined6(order1k.getUserDefined6());//标识码绑定
wmsRawOrderInSnMapper.insertWmsRawOrderInSn(wmsRawOrderInSn);
//标识码绑定
if (order1k.getUserDefined6()!=null){
WmsLogotypeTable wmsLogotypeTable=new WmsLogotypeTable();
wmsLogotypeTable.setId(IdUtils.fastSimpleUUID());
wmsLogotypeTable.setLogotype(order1k.getUserDefined6());
wmsLogotypeTable.setSn(order1k.getSn());
wmsLogotypeTable.setActiveFlag("1");
wmsRawOrderInSnMapper.insertWmsLogotypeTable(wmsLogotypeTable);
}
odsProcureOrderMapper.updateodsProcureOrderCard(order1k);
}
Map map = new HashMap();
map = (Map) result2.getData();
String MATERIALDOCUMENT = (String) map.get("MATERIALDOCUMENT");
String MATDOCUMENTYEAR = (String) map.get("MATDOCUMENTYEAR");
for (OdsProcureOrder odsProcureOrder:
orderList1) {
BigDecimal planNumber= odsProcureOrder.getPlanNumber();
;//操作数量
odsProcureOrder.setOrderStatus("1");
BigDecimal result = odsProcureOrder.getRealityNumber().add(odsProcureOrder.getCzNumber());
System.out.println(result);
if (result.compareTo(planNumber)== 0) {
odsProcureOrder.setOrderStatus("2");
}
odsProcureOrder.setPlanNumber(odsProcureOrder.getCzNumber());
odsProcureOrderMapper.updateRealityNuById(odsProcureOrder);
}
for (OdsProcureOrder odsProcureOrder:
orderList1) {
//标识卡记录已经录入,订单已经修改完成
OdsProcureOrder order1 = odsProcureOrderMapper.selectOdsProcureOrderByID(odsProcureOrder.getID());
order1.setSapTempInfor(result2.getMsg());
WmsRawOrderIn wmsRawOrderIn=new WmsRawOrderIn();
wmsRawOrderIn.setRawOrderInId(IdUtils.fastSimpleUUID());
wmsRawOrderIn.setFactoryCode(odsProcureOrder.getFactoryCode());
wmsRawOrderIn.setOrderNo(order1.getUserDefined5());//送货单
wmsRawOrderIn.setDnNo(receiptNoCode);
wmsRawOrderIn.setPoNo(odsProcureOrder.getProcureCode());
wmsRawOrderIn.setPoLine(odsProcureOrder.getUserDefined3());
wmsRawOrderIn.setMaterialCode(odsProcureOrder.getMaterialCode());
wmsRawOrderIn.setMaterialDesc(odsProcureOrder.getMaterialDesc());
wmsRawOrderIn.setRequestAmount(odsProcureOrder.getCzNumber());
wmsRawOrderIn.setUnit(odsProcureOrder.getUnit());
wmsRawOrderIn.setRequestTime(new Date());
wmsRawOrderIn.setOrderStatus("0");//暂收
wmsRawOrderIn.setActiveFlag("1");
wmsRawOrderIn.setSupplyCode(odsProcureOrder.getSupplierCode());
//wmsRawOrderIn.setUserDefined1();
wmsRawOrderIn.setAccountingStatus("0");//0是暂收
wmsRawOrderIn.setUserDefined1(MATERIALDOCUMENT);//物料凭证编号
wmsRawOrderIn.setUserDefined2(MATDOCUMENTYEAR);//年凭证号
wmsRawOrderIn.setUserDefined3(result2.getMsg());//暂收信息
//wmsRawOrderIn.setAccountingMessage(result2.getMsg());
wmsRawOrderIn.setSapFactoryCode(factoryCode);
wmsRawOrderIn.setCreateBy(odsProcureOrder.getCreateBy());
wmsRawOrderIn.setGmtCreate(new Date());
wmsRawOrderInMapper.insertWmsRawOrderIn(wmsRawOrderIn);
order1.setSapTempStatus("1");//0是失败。1是成功
odsProcureOrderMapper.updateOdsProcureOrder(order1);
}
for (OdsProcureOrder odsProcureOrder1:orderList){
//收货
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = new WmsOdsMateStorageNewsSn();
wmsOdsMateStorageNewsSn.setMateOrderInSnId(IdUtils.fastSimpleUUID());
wmsOdsMateStorageNewsSn.setWhCode(odsProcureOrder1.getWhCode());//仓库编码
wmsOdsMateStorageNewsSn.setWaCode(odsProcureOrder1.getWaCode());
wmsOdsMateStorageNewsSn.setWlCode(odsProcureOrder1.getSn());//库位编码-
wmsOdsMateStorageNewsSn.setMaterialCode(odsProcureOrder1.getMaterialCode());
wmsOdsMateStorageNewsSn.setMaterialDesc(odsProcureOrder1.getMaterialDesc());
wmsOdsMateStorageNewsSn.setSn(odsProcureOrder1.getSn());
wmsOdsMateStorageNewsSn.setAmount(odsProcureOrder1.getPlanNumber());
wmsOdsMateStorageNewsSn.setCreateBy(odsProcureOrder1.getCreateBy());
wmsOdsMateStorageNewsSn.setGmtCreate(new Date());
wmsOdsMateStorageNewsSn.setUserDefined2(odsProcureOrder1.getUserDefined7());//批次
wmsOdsMateStorageNewsSn.setUserDefined1("RK");
wmsOdsMateStorageNewsSn.setUserDefined3("0");//0是暂收1是真收
wmsOdsMateStorageNewsSn.setFactoryCode(odsProcureOrder1.getFactoryCode());
wmsOdsMateStorageNewsSn.setSapFactoryCode(odsProcureOrder1.getFactoryCode());
wmsOdsMateStorageNewsSn.setActiveFlag("1");
wmsOdsMateStorageNewsSnMapper.insertWmsOdsMateStorageNewsSn(wmsOdsMateStorageNewsSn);
//修改库存
//2,修改库存---/加库存数量-/-冻结数量
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
wmsOdsEmStorageNews.setWhCode(odsProcureOrder1.getWhCode());//仓库编码
wmsOdsEmStorageNews.setWlCode(odsProcureOrder1.getSn());//库位编码
wmsOdsEmStorageNews.setWaCode(odsProcureOrder1.getWaCode());//库位编码
wmsOdsEmStorageNews.setMaterialCode(odsProcureOrder1.getMaterialCode());
wmsOdsEmStorageNews.setUserDefined2(odsProcureOrder1.getUserDefined7());//批次
wmsOdsEmStorageNews.setAmount(odsProcureOrder1.getPlanNumber());
//添加库存--这个要有个判断有没有这个库存如果没有的话,就插入
WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectByWhCodeAndMate(wmsOdsEmStorageNews);
if (wmsOdsMateStorageNews == null) {
WmsOdsMateStorageNews wmsOdsMateStorageNews1 = new WmsOdsMateStorageNews();
wmsOdsMateStorageNews1.setStorageId(IdUtils.fastSimpleUUID());
wmsOdsMateStorageNews1.setWhCode(odsProcureOrder1.getWhCode());
wmsOdsMateStorageNews1.setWlCode(odsProcureOrder1.getSn());
wmsOdsMateStorageNews1.setWaCode(odsProcureOrder1.getWaCode());
wmsOdsMateStorageNews1.setAmount(odsProcureOrder1.getPlanNumber());
wmsOdsMateStorageNews1.setStorageAmount(odsProcureOrder1.getPlanNumber());
wmsOdsMateStorageNews1.setMaterialCode(odsProcureOrder1.getMaterialCode());
wmsOdsMateStorageNews1.setMaterialDesc(odsProcureOrder1.getMaterialDesc());
wmsOdsMateStorageNews1.setStorageType("BC");
wmsOdsMateStorageNews1.setCreateBy(odsProcureOrder1.getCreateBy());
wmsOdsMateStorageNews1.setGmtCreate(new Date());
wmsOdsMateStorageNews1.setActiveFlag("1");
wmsOdsMateStorageNews1.setFactoryCode(odsProcureOrder1.getFactoryCode());
wmsOdsMateStorageNews1.setSapFactoryCode(odsProcureOrder1.getFactoryCode());
wmsOdsMateStorageNews1.setUserDefined1(odsProcureOrder1.getUnit());//单位
wmsOdsMateStorageNewsMapper.insertWmsOdsMateStorageNews(wmsOdsMateStorageNews1);
} else {
wmsOdsMateStorageNewsSnMapper.updateAdd(wmsOdsEmStorageNews);
//单子
BigDecimal czNumber=new BigDecimal("0");
for ( OdsProcureOrder order :
orderList) {
if (order.getID().equals(odsProcureOrder.getID())){
czNumber=czNumber.add(order.getPlanNumber());
}
}
// wmsRawOrderInSnMapper.updateU1Byid(wmsRawOrderInSn);//入库
odsProcureOrder.setCzNumber(czNumber);
}
}else {////失败|
result1="暂收失败";
List<Map> mapList = new ArrayList<>();
for (OdsProcureOrder order :
orderList1) {
OdsProcureOrder order2 = odsProcureOrderMapper.selectOdsProcureOrderByID(order.getID());
order2.setSapTempInfor(result2.getMsg());
order2.setSapTempStatus("0");//0是失败。1是成功
odsProcureOrderMapper.updateOdsProcureOrder(order2);
Map paramMap=new HashMap<>();
paramMap.put("EBELN",order.getProcureCode());//
paramMap.put("EBELP",order.getUserDefined3());//行项目
paramMap.put("MATNR",order.getMaterialCode());//物料
paramMap.put("WERKS",order.getSiteCode());//工厂
paramMap.put("QUANTITY",order.getCzNumber());//数量
paramMap.put("P_LFSNR",order.getUserDefined5());//送
mapList.add(paramMap);
}
R result2 = remoteSapService.temporarilyCollected(mapList);
int code = result2.getCode();
if (code == 200){
//对应采购单的标识卡
for (OdsProcureOrder order1k:
orderList) {
//标识卡信息
//wms_raw_order_in_sn
WmsRawOrderInSn wmsRawOrderInSn = new WmsRawOrderInSn();
wmsRawOrderInSn.setRawOrderInSnId(IdUtils.fastSimpleUUID());
wmsRawOrderInSn.setUserDefined1("1");//1是收货,2是入库
wmsRawOrderInSn.setUserDefined2(order1k.getUserDefined7());//批次
wmsRawOrderInSn.setWhCode(order1k.getWhCode());//厂库编号
wmsRawOrderInSn.setWaCode(order1k.getWaCode());
wmsRawOrderInSn.setWlCode(order1k.getSn());//库位设置为托盘
wmsRawOrderInSn.setPoNo(order1k.getProcureCode());//采购单号
wmsRawOrderInSn.setPoLine(order1k.getUserDefined3());//行项目
wmsRawOrderInSn.setMaterialCode(order1k.getMaterialCode());
wmsRawOrderInSn.setMaterialDesc(order1k.getMaterialDesc());
wmsRawOrderInSn.setAmount(order1k.getPlanNumber());//实际输入数量
wmsRawOrderInSn.setFactoryCode(order1k.getFactoryCode());
wmsRawOrderInSn.setCreateBy(order1k.getCreateBy());
wmsRawOrderInSn.setGmtCreate(new Date());
wmsRawOrderInSn.setActiveFlag("1");
wmsRawOrderInSn.setUserDefined4(order1k.getUnit());//单位
wmsRawOrderInSn.setSn(order1k.getSn());//托盘号
wmsRawOrderInSn.setFactoryCode(order1k.getFactoryCode());
wmsRawOrderInSn.setUserDefined3(order1k.getID());
wmsRawOrderInSn.setUserDefined5(order1k.getReceiptNoCode());
//wmsRawOrderInSn.setd
wmsRawOrderInSn.setUserDefined6(order1k.getUserDefined6());//标识码绑定
wmsRawOrderInSnMapper.insertWmsRawOrderInSn(wmsRawOrderInSn);
//标识码绑定
if (order1k.getUserDefined6()!=null){
WmsLogotypeTable wmsLogotypeTable=new WmsLogotypeTable();
wmsLogotypeTable.setId(IdUtils.fastSimpleUUID());
wmsLogotypeTable.setLogotype(order1k.getUserDefined6());
wmsLogotypeTable.setSn(order1k.getSn());
wmsLogotypeTable.setActiveFlag("1");
wmsRawOrderInSnMapper.insertWmsLogotypeTable(wmsLogotypeTable);
}
odsProcureOrderMapper.updateodsProcureOrderCard(order1k);
}
Map map = new HashMap();
map = (Map) result2.getData();
String MATERIALDOCUMENT = (String) map.get("MATERIALDOCUMENT");
String MATDOCUMENTYEAR = (String) map.get("MATDOCUMENTYEAR");
for (OdsProcureOrder odsProcureOrder:
orderList1) {
BigDecimal planNumber= odsProcureOrder.getPlanNumber();
;//操作数量
odsProcureOrder.setOrderStatus("1");
BigDecimal result = odsProcureOrder.getRealityNumber().add(odsProcureOrder.getCzNumber());
System.out.println(result);
if (result.compareTo(planNumber)== 0) {
odsProcureOrder.setOrderStatus("2");
}
odsProcureOrder.setPlanNumber(odsProcureOrder.getCzNumber());
odsProcureOrderMapper.updateRealityNuById(odsProcureOrder);
}
for (OdsProcureOrder odsProcureOrder:
orderList1) {
//标识卡记录已经录入,订单已经修改完成
OdsProcureOrder order1 = odsProcureOrderMapper.selectOdsProcureOrderByID(odsProcureOrder.getID());
order1.setSapTempInfor(result2.getMsg());
WmsRawOrderIn wmsRawOrderIn=new WmsRawOrderIn();
wmsRawOrderIn.setRawOrderInId(IdUtils.fastSimpleUUID());
wmsRawOrderIn.setFactoryCode(odsProcureOrder.getFactoryCode());
wmsRawOrderIn.setOrderNo(order1.getUserDefined5());//送货单
wmsRawOrderIn.setDnNo(receiptNoCode);
wmsRawOrderIn.setPoNo(odsProcureOrder.getProcureCode());
wmsRawOrderIn.setPoLine(odsProcureOrder.getUserDefined3());
wmsRawOrderIn.setMaterialCode(odsProcureOrder.getMaterialCode());
wmsRawOrderIn.setMaterialDesc(odsProcureOrder.getMaterialDesc());
wmsRawOrderIn.setRequestAmount(odsProcureOrder.getCzNumber());
wmsRawOrderIn.setUnit(odsProcureOrder.getUnit());
wmsRawOrderIn.setRequestTime(new Date());
wmsRawOrderIn.setOrderStatus("0");//暂收
wmsRawOrderIn.setActiveFlag("1");
wmsRawOrderIn.setSupplyCode(odsProcureOrder.getSupplierCode());
//wmsRawOrderIn.setUserDefined1();
wmsRawOrderIn.setAccountingStatus("0");//0是暂收
wmsRawOrderIn.setUserDefined1(MATERIALDOCUMENT);//物料凭证编号
wmsRawOrderIn.setUserDefined2(MATDOCUMENTYEAR);//年凭证号
wmsRawOrderIn.setUserDefined3(result2.getMsg());//暂收信息
//wmsRawOrderIn.setAccountingMessage(result2.getMsg());
wmsRawOrderIn.setSapFactoryCode(factoryCode);
wmsRawOrderIn.setCreateBy(odsProcureOrder.getCreateBy());
wmsRawOrderIn.setGmtCreate(new Date());
wmsRawOrderInMapper.insertWmsRawOrderIn(wmsRawOrderIn);
order1.setSapTempStatus("1");//0是失败。1是成功
odsProcureOrderMapper.updateOdsProcureOrder(order1);
}
for (OdsProcureOrder odsProcureOrder1:orderList){
//收货
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = new WmsOdsMateStorageNewsSn();
wmsOdsMateStorageNewsSn.setMateOrderInSnId(IdUtils.fastSimpleUUID());
wmsOdsMateStorageNewsSn.setWhCode(odsProcureOrder1.getWhCode());//仓库编码
wmsOdsMateStorageNewsSn.setWaCode(odsProcureOrder1.getWaCode());
wmsOdsMateStorageNewsSn.setWlCode(odsProcureOrder1.getSn());//库位编码-
wmsOdsMateStorageNewsSn.setMaterialCode(odsProcureOrder1.getMaterialCode());
wmsOdsMateStorageNewsSn.setMaterialDesc(odsProcureOrder1.getMaterialDesc());
wmsOdsMateStorageNewsSn.setSn(odsProcureOrder1.getSn());
wmsOdsMateStorageNewsSn.setAmount(odsProcureOrder1.getPlanNumber());
wmsOdsMateStorageNewsSn.setCreateBy(odsProcureOrder1.getCreateBy());
wmsOdsMateStorageNewsSn.setGmtCreate(new Date());
wmsOdsMateStorageNewsSn.setUserDefined2(odsProcureOrder1.getUserDefined7());//批次
wmsOdsMateStorageNewsSn.setUserDefined1("RK");
wmsOdsMateStorageNewsSn.setUserDefined3("0");//0是暂收1是真收
wmsOdsMateStorageNewsSn.setFactoryCode(odsProcureOrder1.getFactoryCode());
wmsOdsMateStorageNewsSn.setSapFactoryCode(odsProcureOrder1.getFactoryCode());
wmsOdsMateStorageNewsSn.setActiveFlag("1");
wmsOdsMateStorageNewsSnMapper.insertWmsOdsMateStorageNewsSn(wmsOdsMateStorageNewsSn);
//修改库存
//2,修改库存---/加库存数量-/-冻结数量
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
wmsOdsEmStorageNews.setWhCode(odsProcureOrder1.getWhCode());//仓库编码
wmsOdsEmStorageNews.setWlCode(odsProcureOrder1.getSn());//库位编码
wmsOdsEmStorageNews.setWaCode(odsProcureOrder1.getWaCode());//库位编码
wmsOdsEmStorageNews.setMaterialCode(odsProcureOrder1.getMaterialCode());
wmsOdsEmStorageNews.setUserDefined2(odsProcureOrder1.getUserDefined7());//批次
wmsOdsEmStorageNews.setAmount(odsProcureOrder1.getPlanNumber());
//添加库存--这个要有个判断有没有这个库存如果没有的话,就插入
WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectByWhCodeAndMate(wmsOdsEmStorageNews);
if (wmsOdsMateStorageNews == null) {
WmsOdsMateStorageNews wmsOdsMateStorageNews1 = new WmsOdsMateStorageNews();
wmsOdsMateStorageNews1.setStorageId(IdUtils.fastSimpleUUID());
wmsOdsMateStorageNews1.setWhCode(odsProcureOrder1.getWhCode());
wmsOdsMateStorageNews1.setWlCode(odsProcureOrder1.getSn());
wmsOdsMateStorageNews1.setWaCode(odsProcureOrder1.getWaCode());
wmsOdsMateStorageNews1.setAmount(odsProcureOrder1.getPlanNumber());
wmsOdsMateStorageNews1.setStorageAmount(odsProcureOrder1.getPlanNumber());
wmsOdsMateStorageNews1.setMaterialCode(odsProcureOrder1.getMaterialCode());
wmsOdsMateStorageNews1.setMaterialDesc(odsProcureOrder1.getMaterialDesc());
wmsOdsMateStorageNews1.setStorageType("BC");
wmsOdsMateStorageNews1.setCreateBy(odsProcureOrder1.getCreateBy());
wmsOdsMateStorageNews1.setGmtCreate(new Date());
wmsOdsMateStorageNews1.setActiveFlag("1");
wmsOdsMateStorageNews1.setFactoryCode(odsProcureOrder1.getFactoryCode());
wmsOdsMateStorageNews1.setSapFactoryCode(odsProcureOrder1.getFactoryCode());
wmsOdsMateStorageNews1.setUserDefined1(odsProcureOrder1.getUnit());//单位
wmsOdsMateStorageNewsMapper.insertWmsOdsMateStorageNews(wmsOdsMateStorageNews1);
} else {
wmsOdsMateStorageNewsSnMapper.updateAdd(wmsOdsEmStorageNews);
}
// wmsRawOrderInSnMapper.updateU1Byid(wmsRawOrderInSn);//入库
}
}else {////失败|
result1="暂收失败";
for (OdsProcureOrder order :
orderList1) {
OdsProcureOrder order2 = odsProcureOrderMapper.selectOdsProcureOrderByID(order.getID());
order2.setSapTempInfor(result2.getMsg());
order2.setSapTempStatus("0");//0是失败。1是成功
odsProcureOrderMapper.updateOdsProcureOrder(order2);
}
return result1;
}
return result1;
}finally {
DynamicDataSourceContextHolder.poll();
}
return result1;
}
@Override

@ -242,8 +242,13 @@ public class OdsProcureOutOrderServiceImpl implements IOdsProcureOutOrderService
@Override
public List<OdsProcureOutOrder> listReturnSC(OdsProcureOutOrder odsProcureOutOrder) {
DynamicDataSourceContextHolder.push("ds_" + odsProcureOutOrder.getFactoryCode());
List<OdsProcureOutOrder> orderList = odsProcureOutOrderMapper.selectOdsProcureReturnOrderListZC(odsProcureOutOrder);
return orderList;
try {
List<OdsProcureOutOrder> orderList = odsProcureOutOrderMapper.selectOdsProcureReturnOrderListZC(odsProcureOutOrder);
return orderList;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
@ -298,8 +303,13 @@ public class OdsProcureOutOrderServiceImpl implements IOdsProcureOutOrderService
public List<OdsProcureOutOrder> listOdsProcureOutOrderTS(OdsProcureOutOrder procureOutOrder) {
String factoryCode = procureOutOrder.getFactoryCode();
DynamicDataSourceContextHolder.push("ds_" + factoryCode);
List<OdsProcureOutOrder> odsProcureOutOrders= odsProcureOutOrderMapper.listOdsProcureOutOrderTS(procureOutOrder);
return odsProcureOutOrders;
try {
List<OdsProcureOutOrder> odsProcureOutOrders= odsProcureOutOrderMapper.listOdsProcureOutOrderTS(procureOutOrder);
return odsProcureOutOrders;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
@ -319,72 +329,77 @@ public class OdsProcureOutOrderServiceImpl implements IOdsProcureOutOrderService
if(orderList.size()>0){
String factoryCode = orderList.get(0).getFactoryCode();
DynamicDataSourceContextHolder.push("ds_" + factoryCode);
for (OdsProcureOutOrder odsProcureOutOrder :
orderList) {
String produceCode= odsProcureOutOrder.getProduceCode();//生产领料单号"订单编号"
String createBy= odsProcureOutOrder.getCreateBy();//操作人
String mateOrderInSnId= odsProcureOutOrder.getMateOrderInSnId();//标识卡对应id
String sn= odsProcureOutOrder.getSn();
String materialCode= odsProcureOutOrder.getMaterialCode();
String materialDesc= odsProcureOutOrder.getMaterialDesc();
BigDecimal amount= odsProcureOutOrder.getAmount();//数量
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = wmsOdsMateStorageNewsSnMapper.selectWmsOdsMateStorageNewsSnByMateOrderInSnIdk(mateOrderInSnId);
//包材明细表
OdsProcureOutOrder order = new OdsProcureOutOrder();
try {
for (OdsProcureOutOrder odsProcureOutOrder :
orderList) {
String produceCode= odsProcureOutOrder.getProduceCode();//生产领料单号"订单编号"
String createBy= odsProcureOutOrder.getCreateBy();//操作人
String mateOrderInSnId= odsProcureOutOrder.getMateOrderInSnId();//标识卡对应id
String sn= odsProcureOutOrder.getSn();
String materialCode= odsProcureOutOrder.getMaterialCode();
String materialDesc= odsProcureOutOrder.getMaterialDesc();
BigDecimal amount= odsProcureOutOrder.getAmount();//数量
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = wmsOdsMateStorageNewsSnMapper.selectWmsOdsMateStorageNewsSnByMateOrderInSnIdk(mateOrderInSnId);
//包材明细表
OdsProcureOutOrder order = new OdsProcureOutOrder();
order.setProduceCode(produceCode);//领料单
order.setMaterialCode(materialCode);//
order.setMaterialDesc(materialDesc);
order.setUserDefined1(wmsOdsMateStorageNewsSn.getUserDefined2());//批次
order.setUserDefined2(wmsOdsMateStorageNewsSn.getWhCode());
order.setUserDefined3(wmsOdsMateStorageNewsSn.getWlCode());
order.setSn(sn);
order.setPlanNumber(amount);
order.setLocCode(wmsOdsMateStorageNewsSn.getWaCode());//库区
order.setID(IdUtils.fastSimpleUUID());
order.setUnit("PC");
order.setFactoryCode(factoryCode);
order.setActive("1");
order.setCreateBy(createBy);
order.setCreateDate(new Date());
OdsProcureOutOrder odsProcureOutOrder1=new OdsProcureOutOrder();
odsProcureOutOrder1.setProduceCode(produceCode);
odsProcureOutOrder1.setMaterialCode(materialCode);
List<OdsProcureOutOrder> odsProcureOutOrders = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrderSpecial(odsProcureOutOrder1);
//包材出库单----会有特殊的那种二次过账的单子--就看前端会不会传对应的标识卡了
ID=odsProcureOutOrders.get(0).getID();
OdsProcureOutOrder order1= odsProcureOutOrders.get(0);
order.setUserDefined4(order1.getUserDefined4());
//出库明细
odsProcureOutOrderMapper.insertWmsRawMissionOut(order);
//BigDecimal sapNumber =order1.getSapNumber();
BigDecimal realityNumber1 = order1.getOutNumber();//累出库数
BigDecimal realityNumber = order1.getPlanNumber();//计划
BigDecimal planNumber = amount;//本次实际数量
BigDecimal tem = realityNumber1.add(planNumber);
if (tem.compareTo(realityNumber)>= 0) {
order1.setOrderStatus("3");//3是满足出库数量
} else {
order1.setOrderStatus("2");//进行
}
order1.setOutNumber(tem);//这样的话就可以用已经过账的数量来计算要过账的数量用出库数量减去已经过账的数量就是要过账的数量只要不为0就可以进行
order.setProduceCode(produceCode);//领料单
order.setMaterialCode(materialCode);//
order.setMaterialDesc(materialDesc);
order.setUserDefined1(wmsOdsMateStorageNewsSn.getUserDefined2());//批次
order.setUserDefined2(wmsOdsMateStorageNewsSn.getWhCode());
order.setUserDefined3(wmsOdsMateStorageNewsSn.getWlCode());
order.setSn(sn);
order.setPlanNumber(amount);
order.setLocCode(wmsOdsMateStorageNewsSn.getWaCode());//库区
order.setID(IdUtils.fastSimpleUUID());
order.setUnit("PC");
order.setFactoryCode(factoryCode);
order.setActive("1");
order.setCreateBy(createBy);
order.setCreateDate(new Date());
OdsProcureOutOrder odsProcureOutOrder1=new OdsProcureOutOrder();
odsProcureOutOrder1.setProduceCode(produceCode);
odsProcureOutOrder1.setMaterialCode(materialCode);
List<OdsProcureOutOrder> odsProcureOutOrders = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrderSpecial(odsProcureOutOrder1);
//包材出库单----会有特殊的那种二次过账的单子--就看前端会不会传对应的标识卡了
ID=odsProcureOutOrders.get(0).getID();
OdsProcureOutOrder order1= odsProcureOutOrders.get(0);
order.setUserDefined4(order1.getUserDefined4());
//出库明细
odsProcureOutOrderMapper.insertWmsRawMissionOut(order);
//BigDecimal sapNumber =order1.getSapNumber();
BigDecimal realityNumber1 = order1.getOutNumber();//累出库数
BigDecimal realityNumber = order1.getPlanNumber();//计划
BigDecimal planNumber = amount;//本次实际数量
BigDecimal tem = realityNumber1.add(planNumber);
if (tem.compareTo(realityNumber)>= 0) {
order1.setOrderStatus("3");//3是满足出库数量
} else {
order1.setOrderStatus("2");//进行
}
order1.setOutNumber(tem);//这样的话就可以用已经过账的数量来计算要过账的数量用出库数量减去已经过账的数量就是要过账的数量只要不为0就可以进行
// order1.setSapNumber(sapNumber.add(planNumber));//原本的过账数量
odsProcureOutOrderMapper.updateWmsOdsProcureOutOrderSpecial(order1);//订单修改--会超
wmsOdsMateStorageNewsSn.setOutNumber(amount);
wmsOdsMateStorageNewsSn.setLastModifiedBy(createBy);
//库存明细--包材库存
wmsOdsMateStorageNewsSnMapper.updateWmsOdsMateStorageNewsSnAddoutNumber(wmsOdsMateStorageNewsSn);
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
wmsOdsEmStorageNews.setWhCode(wmsOdsMateStorageNewsSn.getWhCode());//仓库编码
wmsOdsEmStorageNews.setWlCode(wmsOdsMateStorageNewsSn.getWlCode());//库位编码
wmsOdsEmStorageNews.setWaCode(wmsOdsMateStorageNewsSn.getWaCode());
wmsOdsEmStorageNews.setProductBatch(wmsOdsMateStorageNewsSn.getUserDefined2());
wmsOdsEmStorageNews.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode());
wmsOdsEmStorageNews.setAmount(odsProcureOutOrder.getPlanNumber());//库存
wmsOdsEmStorageNews.setLastModifiedBy(createBy);
wmsOdsMateStorageNewsSnMapper.updatekdd(wmsOdsEmStorageNews);//库存调整
odsProcureOutOrderMapper.updateWmsOdsProcureOutOrderSpecial(order1);//订单修改--会超
wmsOdsMateStorageNewsSn.setOutNumber(amount);
wmsOdsMateStorageNewsSn.setLastModifiedBy(createBy);
//库存明细--包材库存
wmsOdsMateStorageNewsSnMapper.updateWmsOdsMateStorageNewsSnAddoutNumber(wmsOdsMateStorageNewsSn);
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
wmsOdsEmStorageNews.setWhCode(wmsOdsMateStorageNewsSn.getWhCode());//仓库编码
wmsOdsEmStorageNews.setWlCode(wmsOdsMateStorageNewsSn.getWlCode());//库位编码
wmsOdsEmStorageNews.setWaCode(wmsOdsMateStorageNewsSn.getWaCode());
wmsOdsEmStorageNews.setProductBatch(wmsOdsMateStorageNewsSn.getUserDefined2());
wmsOdsEmStorageNews.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode());
wmsOdsEmStorageNews.setAmount(odsProcureOutOrder.getPlanNumber());//库存
wmsOdsEmStorageNews.setLastModifiedBy(createBy);
wmsOdsMateStorageNewsSnMapper.updatekdd(wmsOdsEmStorageNews);//库存调整
}
}finally {
DynamicDataSourceContextHolder.poll();
}
}
// OdsProcureOutOrder order=new OdsProcureOutOrder();
// order.setID(ID);

@ -80,42 +80,43 @@ public class WmsSellOutTrayServiceImpl implements IWmsSellOutTrayService {
public int insertWmsSellOutTray(WmsSellOutTray wmsSellOutTray) {
//todo 需要修改
DynamicDataSourceContextHolder.push("ds_1000");
ValueOperations<String, String> opsForValue = redisTemplate.opsForValue();
String deliveryOrder = opsForValue.get("deliveryOrder");
String productCode = opsForValue.get("productCode");
WmsSellOutEmbryo wmsSellOutEmbryo1 = wmsSellOutEmbryoMapper.selectWmsSellOutEmbryoByOrderCodeAndProductCode(deliveryOrder, productCode);
//todo 根据箱码查询托盘
WmsProductPutTrayCode wmsProductPutTrayCode = wmsProductPutTrayCodeMapper.selectWmsProductPutTrayCodeByBarcode(wmsSellOutTray.getBarcode());
//todo 根据托盘号和产品编码查询库存主表
WmsFpStorageNewsSn wmsFpStorageNewsSn = wmsFpStorageNewsSnMapper.selectWmsFpStorageNewsSnBySnAndProductCode(wmsProductPutTrayCode.getSn(), productCode);
if (ObjectUtils.isEmpty(wmsFpStorageNewsSn)) {
throw new ServiceException("库存中没有这个产品!");
}
//todo 校验批次号是否一致
if (wmsSellOutEmbryo1.getLotNumber().equals(wmsFpStorageNewsSn.getBatchNumber())) {
WmsSellOutTray wmsSellOutTray1 = wmsSellOutTrayMapper.selectWmsSellOutTrayByDeliveryOrderAndProductCode(deliveryOrder, productCode, wmsSellOutTray.getBarcode());
if (wmsSellOutTray1 == null) {
wmsSellOutTray.setId(IdUtils.fastSimpleUUID());
wmsSellOutTray.setDeliveryOrder(deliveryOrder);
wmsSellOutTray.setProductCode(productCode);
WmsSellOutEmbryo wmsSellOutEmbryo = wmsSellOutEmbryoMapper.selectWmsSellOutEmbryoByOrderCodeAndProductCode(deliveryOrder, productCode);
wmsSellOutTray.setFactoryCode(wmsSellOutEmbryo.getFactoryCode());
wmsSellOutTray.setWhCode(wmsSellOutEmbryo.getWhCode());
wmsSellOutTray.setWaCode(wmsSellOutEmbryo.getWaCode());
wmsSellOutTray.setWlCode(wmsFpStorageNewsSn.getWlCode());
wmsSellOutTray.setProductName(wmsSellOutEmbryo.getProductName());
wmsSellOutTray.setProductSort(wmsSellOutEmbryo.getProductSort());
wmsSellOutTray.setCreateTime(DateUtils.getNowDate());
wmsSellOutTray.setBarcode(wmsSellOutTray.getBarcode());
wmsSellOutTray.setLotNumber(wmsSellOutEmbryo.getLotNumber());
//根据箱码查询托盘号
wmsSellOutTray.setSn(wmsProductPutTrayCode.getSn());
} else {
throw new ServiceException("这个产品已经出库!");
try {
ValueOperations<String, String> opsForValue = redisTemplate.opsForValue();
String deliveryOrder = opsForValue.get("deliveryOrder");
String productCode = opsForValue.get("productCode");
WmsSellOutEmbryo wmsSellOutEmbryo1 = wmsSellOutEmbryoMapper.selectWmsSellOutEmbryoByOrderCodeAndProductCode(deliveryOrder, productCode);
//todo 根据箱码查询托盘
WmsProductPutTrayCode wmsProductPutTrayCode = wmsProductPutTrayCodeMapper.selectWmsProductPutTrayCodeByBarcode(wmsSellOutTray.getBarcode());
//todo 根据托盘号和产品编码查询库存主表
WmsFpStorageNewsSn wmsFpStorageNewsSn = wmsFpStorageNewsSnMapper.selectWmsFpStorageNewsSnBySnAndProductCode(wmsProductPutTrayCode.getSn(), productCode);
if (ObjectUtils.isEmpty(wmsFpStorageNewsSn)) {
throw new ServiceException("库存中没有这个产品!");
}
//todo 校验批次号是否一致
if (wmsSellOutEmbryo1.getLotNumber().equals(wmsFpStorageNewsSn.getBatchNumber())) {
WmsSellOutTray wmsSellOutTray1 = wmsSellOutTrayMapper.selectWmsSellOutTrayByDeliveryOrderAndProductCode(deliveryOrder, productCode, wmsSellOutTray.getBarcode());
if (wmsSellOutTray1 == null) {
wmsSellOutTray.setId(IdUtils.fastSimpleUUID());
wmsSellOutTray.setDeliveryOrder(deliveryOrder);
wmsSellOutTray.setProductCode(productCode);
WmsSellOutEmbryo wmsSellOutEmbryo = wmsSellOutEmbryoMapper.selectWmsSellOutEmbryoByOrderCodeAndProductCode(deliveryOrder, productCode);
wmsSellOutTray.setFactoryCode(wmsSellOutEmbryo.getFactoryCode());
wmsSellOutTray.setWhCode(wmsSellOutEmbryo.getWhCode());
wmsSellOutTray.setWaCode(wmsSellOutEmbryo.getWaCode());
wmsSellOutTray.setWlCode(wmsFpStorageNewsSn.getWlCode());
wmsSellOutTray.setProductName(wmsSellOutEmbryo.getProductName());
wmsSellOutTray.setProductSort(wmsSellOutEmbryo.getProductSort());
wmsSellOutTray.setCreateTime(DateUtils.getNowDate());
wmsSellOutTray.setBarcode(wmsSellOutTray.getBarcode());
wmsSellOutTray.setLotNumber(wmsSellOutEmbryo.getLotNumber());
//根据箱码查询托盘号
wmsSellOutTray.setSn(wmsProductPutTrayCode.getSn());
} else {
throw new ServiceException("这个产品已经出库!");
}
} else {
throw new ServiceException("批次号在库存中不存在!");
}
} else {
throw new ServiceException("批次号在库存中不存在!");
}
// WmsSellOutEmbryo wmsSellOutEmbryo1 = wmsSellOutEmbryoMapper.selectWmsSellOutEmbryoByOrderCodeAndProductCode(deliveryOrder, productCode);
// WmsSellOutTray wmsSellOutTray1 = wmsSellOutTrayMapper.selectWmsSellOutTrayByDeliveryOrderAndProductCode(deliveryOrder, productCode, wmsSellOutTray.getBarcode());
// if (wmsSellOutTray1==null){
@ -141,7 +142,11 @@ public class WmsSellOutTrayServiceImpl implements IWmsSellOutTrayService {
//// if ((wmsSellOutTray1.getBarcode()).equals(wmsSellOutTray.getBarcode())){
//// throw new ServiceException("这个产品已经出库!");
//// }
return wmsSellOutTrayMapper.insertWmsSellOutTray(wmsSellOutTray);
return wmsSellOutTrayMapper.insertWmsSellOutTray(wmsSellOutTray);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -192,28 +197,29 @@ public class WmsSellOutTrayServiceImpl implements IWmsSellOutTrayService {
public int handSellOut(List<WmsSellOutTray> wmsSellOutTrays) {
//todo 需要修改
DynamicDataSourceContextHolder.push("ds_1000");
for (WmsSellOutTray wmsSellOutTray : wmsSellOutTrays) {
//todo 根据箱码查询托盘号
WmsProductPutTrayCode wmsProductPutTrayCode = wmsProductPutTrayCodeMapper.selectWmsProductPutTrayCodeByBarcode(wmsSellOutTray.getBarcode());
//todo 对托盘和箱码的状态进行解绑修改
wmsProductPutTrayCode.setRelatStatus("0");
wmsProductPutTrayCodeMapper.updateWmsProductPutTrayCode(wmsProductPutTrayCode);
}
//todo 出库完成之后,减库存——根据产品编码和库位编码减库存
ValueOperations<String, String> opsForValue = redisTemplate.opsForValue();
String deliveryOrder = opsForValue.get("deliveryOrder");
String productCode = opsForValue.get("productCode");
for (WmsSellOutTray wmsSellOutTray : wmsSellOutTrays) {
//根据产品编码和库位号查询主表
WmsFpStorageNews wmsFpStorageNews = wmsFpStorageNewsMapper.selectWmsFpStorageNewsByProductCodeAndWlCode(productCode, wmsSellOutTray.getWlCode());
if (ObjectUtils.isEmpty(wmsFpStorageNews)) {
throw new ServiceException("该产品没有库存!");
} else {
BigDecimal outQuantity = new BigDecimal("1");
wmsFpStorageNews.setAmount(wmsFpStorageNews.getAmount().subtract(outQuantity));
wmsFpStorageNewsMapper.updateWmsFpStorageNews(wmsFpStorageNews);
try {
for (WmsSellOutTray wmsSellOutTray : wmsSellOutTrays) {
//todo 根据箱码查询托盘号
WmsProductPutTrayCode wmsProductPutTrayCode = wmsProductPutTrayCodeMapper.selectWmsProductPutTrayCodeByBarcode(wmsSellOutTray.getBarcode());
//todo 对托盘和箱码的状态进行解绑修改
wmsProductPutTrayCode.setRelatStatus("0");
wmsProductPutTrayCodeMapper.updateWmsProductPutTrayCode(wmsProductPutTrayCode);
}
//todo 出库完成之后,减库存——根据产品编码和库位编码减库存
ValueOperations<String, String> opsForValue = redisTemplate.opsForValue();
String deliveryOrder = opsForValue.get("deliveryOrder");
String productCode = opsForValue.get("productCode");
for (WmsSellOutTray wmsSellOutTray : wmsSellOutTrays) {
//根据产品编码和库位号查询主表
WmsFpStorageNews wmsFpStorageNews = wmsFpStorageNewsMapper.selectWmsFpStorageNewsByProductCodeAndWlCode(productCode, wmsSellOutTray.getWlCode());
if (ObjectUtils.isEmpty(wmsFpStorageNews)) {
throw new ServiceException("该产品没有库存!");
} else {
BigDecimal outQuantity = new BigDecimal("1");
wmsFpStorageNews.setAmount(wmsFpStorageNews.getAmount().subtract(outQuantity));
wmsFpStorageNewsMapper.updateWmsFpStorageNews(wmsFpStorageNews);
}
}
}
// ValueOperations<String, String> opsForValue = redisTemplate.opsForValue();
// String deliveryOrder = opsForValue.get("deliveryOrder");
// String productCode = opsForValue.get("productCode");
@ -228,18 +234,22 @@ public class WmsSellOutTrayServiceImpl implements IWmsSellOutTrayService {
// wmsFpStorageNews.setAmount(wmsFpStorageNews.getAmount().subtract(outQuantity));
// wmsFpStorageNewsMapper.updateWmsFpStorageNews(wmsFpStorageNews);
// }
//todo 对库存明细修改
for (WmsSellOutTray wmsSellOutTray : wmsSellOutTrays) {
WmsProductPutTrayCode wmsProductPutTrayCode = wmsProductPutTrayCodeMapper.selectWmsProductPutTrayCodeByBarcode(wmsSellOutTray.getBarcode());
WmsFpStorageNewsSn wmsFpStorageNewsSn = wmsFpStorageNewsSnMapper.selectWmsFpStorageNewsSnBySnAndProductCodeAndWlCode(productCode, wmsProductPutTrayCode.getSn(), wmsSellOutTray.getWlCode());
//todo 对托盘上的箱数-1
BigDecimal bigDecimal = new BigDecimal("1");
wmsFpStorageNewsSn.setAmount(wmsFpStorageNewsSn.getAmount().subtract(bigDecimal));
wmsFpStorageNewsSnMapper.updateWmsFpStorageNewsSn(wmsFpStorageNewsSn);
//todo 对库存明细修改
for (WmsSellOutTray wmsSellOutTray : wmsSellOutTrays) {
WmsProductPutTrayCode wmsProductPutTrayCode = wmsProductPutTrayCodeMapper.selectWmsProductPutTrayCodeByBarcode(wmsSellOutTray.getBarcode());
WmsFpStorageNewsSn wmsFpStorageNewsSn = wmsFpStorageNewsSnMapper.selectWmsFpStorageNewsSnBySnAndProductCodeAndWlCode(productCode, wmsProductPutTrayCode.getSn(), wmsSellOutTray.getWlCode());
//todo 对托盘上的箱数-1
BigDecimal bigDecimal = new BigDecimal("1");
wmsFpStorageNewsSn.setAmount(wmsFpStorageNewsSn.getAmount().subtract(bigDecimal));
wmsFpStorageNewsSnMapper.updateWmsFpStorageNewsSn(wmsFpStorageNewsSn);
}
redisTemplate.delete("deliveryOrder");
redisTemplate.delete("productCode");
return 1;
}finally {
DynamicDataSourceContextHolder.poll();
}
redisTemplate.delete("deliveryOrder");
redisTemplate.delete("productCode");
return 1;
}
/**
@ -254,7 +264,11 @@ public class WmsSellOutTrayServiceImpl implements IWmsSellOutTrayService {
public List<WmsSellOutTray> selectWmsSellOutTraysByIDAndCode(String deliveryOrder, String productCode) {
//todo 需要修改
DynamicDataSourceContextHolder.push("ds_1000");
return wmsSellOutTrayMapper.selectWmsSellOutTraysByDeliveryOrderAndProductCode(deliveryOrder, productCode);
try {
return wmsSellOutTrayMapper.selectWmsSellOutTraysByDeliveryOrderAndProductCode(deliveryOrder, productCode);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -267,6 +281,11 @@ public class WmsSellOutTrayServiceImpl implements IWmsSellOutTrayService {
public int deleteWmsSellOutTrayByBarcode(String barcode) {
//todo 需要修改
DynamicDataSourceContextHolder.push("ds_1000");
return wmsSellOutTrayMapper.deleteWmsSellOutTrayByBarcode(barcode);
try {
return wmsSellOutTrayMapper.deleteWmsSellOutTrayByBarcode(barcode);
}finally {
DynamicDataSourceContextHolder.poll();
}
}
}

@ -44,12 +44,17 @@ public class WmsToWCSInterfaceServiceImpl implements IWmsToWCSInterfaceService {
@DS("#header.poolName")
public WmsToWCSDTO requestMaterialLoadNo(WmsToWCSDTO wcsdto) {
DynamicDataSourceContextHolder.push("ds_" + wcsdto.getFactory());
WmsToWCSDTO wmsToWCSDTO = wmsToWCSInterfaceMapper.selectWmsToWCSDTO(wcsdto);
// wmsToWCSDTO.set//
wmsToWCSDTO.setCode("0");
wmsToWCSDTO.setReqCode(wcsdto.getReqCode());
wmsToWCSDTO.setMessage("OK");
return wmsToWCSDTO;
try {
WmsToWCSDTO wmsToWCSDTO = wmsToWCSInterfaceMapper.selectWmsToWCSDTO(wcsdto);
// wmsToWCSDTO.set//
wmsToWCSDTO.setCode("0");
wmsToWCSDTO.setReqCode(wcsdto.getReqCode());
wmsToWCSDTO.setMessage("OK");
return wmsToWCSDTO;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
/**
@ -63,53 +68,58 @@ public class WmsToWCSInterfaceServiceImpl implements IWmsToWCSInterfaceService {
@DS("#header.poolName")
public WmsToWCSDTO blankStorageOrTransferCompleted(WmsToWCSDTO wcsdto) {
DynamicDataSourceContextHolder.push("ds_" + wcsdto.getFactory());
try {
WmsOdsWhiteEmbryoIn wmsOdsWhiteEmbryoIn1 = new WmsOdsWhiteEmbryoIn();
//rfidNo-托盘
WmsToWCSDTO wmsToWCSDTO = wmsToWCSInterfaceMapper.selectWmsToWCSDTO(wcsdto);
//AGV 将白坯放到库内--
WmsOdsWhiteEmbryoIn wmsOdsWhiteEmbryoIn1 = new WmsOdsWhiteEmbryoIn();
//rfidNo-托盘
WmsToWCSDTO wmsToWCSDTO = wmsToWCSInterfaceMapper.selectWmsToWCSDTO(wcsdto);
//AGV 将白坯放到库内--
String workorderCode = wmsToWCSDTO.getWorkorderCode();//单号
wmsOdsWhiteEmbryoIn1.setOrderCode(workorderCode);
WmsOdsWhiteEmbryoIn wmsOdsWhiteEmbryoIn = wmsOdsWhiteEmbryoInMapper.selectWmsOdsWhiteEmbryoInByWorkorderCode(workorderCode);
String qty = wmsToWCSDTO.getQty();//操作数量
BigDecimal planNumber = wmsOdsWhiteEmbryoIn.getPlanNumber();//计划数量
BigDecimal realityNumber = wmsOdsWhiteEmbryoIn.getRealityNumber();//已入数量
BigDecimal sum = new BigDecimal(qty).add(realityNumber); // 将qty转换为BigDecimal类型并与realityNumber相加
boolean ten = sum.compareTo(planNumber) >= 0; // 判断sum是否大于等于planNumber
if (ten) {
wmsOdsWhiteEmbryoIn1.setOrderStatus("1");
} else {
//小于
wmsOdsWhiteEmbryoIn1.setOrderStatus("2");
String workorderCode = wmsToWCSDTO.getWorkorderCode();//单号
wmsOdsWhiteEmbryoIn1.setOrderCode(workorderCode);
WmsOdsWhiteEmbryoIn wmsOdsWhiteEmbryoIn = wmsOdsWhiteEmbryoInMapper.selectWmsOdsWhiteEmbryoInByWorkorderCode(workorderCode);
String qty = wmsToWCSDTO.getQty();//操作数量
BigDecimal planNumber = wmsOdsWhiteEmbryoIn.getPlanNumber();//计划数量
BigDecimal realityNumber = wmsOdsWhiteEmbryoIn.getRealityNumber();//已入数量
BigDecimal sum = new BigDecimal(qty).add(realityNumber); // 将qty转换为BigDecimal类型并与realityNumber相加
boolean ten = sum.compareTo(planNumber) >= 0; // 判断sum是否大于等于planNumber
if (ten) {
wmsOdsWhiteEmbryoIn1.setOrderStatus("1");
} else {
//小于
wmsOdsWhiteEmbryoIn1.setOrderStatus("2");
}
wmsOdsWhiteEmbryoIn1.setRealityNumber(sum);///操作数量+已入数量
//1,修改订单
wmsOdsWhiteEmbryoInMapper.updateWmsOdsWhiteEmbryoInByOrderCode(wmsOdsWhiteEmbryoIn1);
//2,修改库存---减冻结数量//加库存数量
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
wmsOdsEmStorageNews.setWhCode(wcsdto.getWarehouseNo());//仓库编码
wmsOdsEmStorageNews.setWlCode(wcsdto.getLocation());//库位编码
wmsOdsEmStorageNews.setMaterialCode(wmsOdsWhiteEmbryoIn.getMaterialCode());
wmsOdsEmStorageNews.setAmount(new BigDecimal(wmsToWCSDTO.getQty()));
//解冻
wmsOdsEmStorageNewsMapper.updateAdd(wmsOdsEmStorageNews);
//3,添加记录
WmsOdsEmStorageNewsSn wmsOdsEmStorageNewsSn = new WmsOdsEmStorageNewsSn();
wmsOdsEmStorageNewsSn.setWhCode(wcsdto.getWarehouseNo());//仓库编码
wmsOdsEmStorageNewsSn.setWaCode(wcsdto.getLocation());//库区编码
wmsOdsEmStorageNewsSn.setWlCode(wcsdto.getLocation());//库位编码
wmsOdsEmStorageNewsSn.setMaterialCode(wmsOdsWhiteEmbryoIn.getMaterialCode());
wmsOdsEmStorageNewsSn.setMaterialDesc(wmsOdsWhiteEmbryoIn.getMaterialDesc());
wmsOdsEmStorageNewsSn.setSn(wcsdto.getRfidNo());//托盘号
wmsOdsEmStorageNewsSn.setAmount(new BigDecimal(wmsToWCSDTO.getQty()));
wmsOdsEmStorageNewsSn.setCreateTime(new Date());
wmsOdsEmStorageNewsSnMapper.insertWmsOdsEmStorageNewsSn(wmsOdsEmStorageNewsSn);
//
wmsToWCSDTO.setCode("0");
wmsToWCSDTO.setReqCode(wcsdto.getReqCode());
wmsToWCSDTO.setMessage("OK");
return wmsToWCSDTO;
}finally {
DynamicDataSourceContextHolder.poll();
}
wmsOdsWhiteEmbryoIn1.setRealityNumber(sum);///操作数量+已入数量
//1,修改订单
wmsOdsWhiteEmbryoInMapper.updateWmsOdsWhiteEmbryoInByOrderCode(wmsOdsWhiteEmbryoIn1);
//2,修改库存---减冻结数量//加库存数量
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
wmsOdsEmStorageNews.setWhCode(wcsdto.getWarehouseNo());//仓库编码
wmsOdsEmStorageNews.setWlCode(wcsdto.getLocation());//库位编码
wmsOdsEmStorageNews.setMaterialCode(wmsOdsWhiteEmbryoIn.getMaterialCode());
wmsOdsEmStorageNews.setAmount(new BigDecimal(wmsToWCSDTO.getQty()));
//解冻
wmsOdsEmStorageNewsMapper.updateAdd(wmsOdsEmStorageNews);
//3,添加记录
WmsOdsEmStorageNewsSn wmsOdsEmStorageNewsSn = new WmsOdsEmStorageNewsSn();
wmsOdsEmStorageNewsSn.setWhCode(wcsdto.getWarehouseNo());//仓库编码
wmsOdsEmStorageNewsSn.setWaCode(wcsdto.getLocation());//库区编码
wmsOdsEmStorageNewsSn.setWlCode(wcsdto.getLocation());//库位编码
wmsOdsEmStorageNewsSn.setMaterialCode(wmsOdsWhiteEmbryoIn.getMaterialCode());
wmsOdsEmStorageNewsSn.setMaterialDesc(wmsOdsWhiteEmbryoIn.getMaterialDesc());
wmsOdsEmStorageNewsSn.setSn(wcsdto.getRfidNo());//托盘号
wmsOdsEmStorageNewsSn.setAmount(new BigDecimal(wmsToWCSDTO.getQty()));
wmsOdsEmStorageNewsSn.setCreateTime(new Date());
wmsOdsEmStorageNewsSnMapper.insertWmsOdsEmStorageNewsSn(wmsOdsEmStorageNewsSn);
//
wmsToWCSDTO.setCode("0");
wmsToWCSDTO.setReqCode(wcsdto.getReqCode());
wmsToWCSDTO.setMessage("OK");
return wmsToWCSDTO;
}
@Override

@ -39,30 +39,35 @@ public class WmsToWCSmissionServiceImpl implements IWmsToWCSmissionService {
@Override
public WmsToWCSODTO packagingStorage(WmsToWCSDTO wcsdto) {
DynamicDataSourceContextHolder.push("ds_" + wcsdto.getFactory());
WmsToWCSDTO wmsToWCSDTO = wmsRawOrderInMapper.packagingStorage(wcsdto);
// wmsToWCSDTO.set//
if (wmsToWCSDTO == null) {
WmsToWCSODTO wms = new WmsToWCSODTO();
wms.setCode("0");
wms.setReqCode(wcsdto.getReqCode());
wms.setMessage("OK");
return wms;
try {
WmsToWCSDTO wmsToWCSDTO = wmsRawOrderInMapper.packagingStorage(wcsdto);
// wmsToWCSDTO.set//
if (wmsToWCSDTO == null) {
WmsToWCSODTO wms = new WmsToWCSODTO();
wms.setCode("0");
wms.setReqCode(wcsdto.getReqCode());
wms.setMessage("OK");
return wms;
}
wmsToWCSDTO.setQualityStatus("1");
wmsToWCSDTO.setCode("0");
wmsToWCSDTO.setReqCode(wcsdto.getReqCode());
wmsToWCSDTO.setMessage("OK");
WmsToWCSODTO wmsToWCSODTO = new WmsToWCSODTO();
wmsToWCSODTO.setCode("0");
// 创建Gson对象
Gson gson = new GsonBuilder().setPrettyPrinting().create();
// 将对象转换为JSON格式的字符串并格式化输出
String MESSAGE = gson.toJson(wmsToWCSDTO);
wmsToWCSODTO.setMessage(MESSAGE);
return wmsToWCSODTO;
}finally {
DynamicDataSourceContextHolder.poll();
}
wmsToWCSDTO.setQualityStatus("1");
wmsToWCSDTO.setCode("0");
wmsToWCSDTO.setReqCode(wcsdto.getReqCode());
wmsToWCSDTO.setMessage("OK");
WmsToWCSODTO wmsToWCSODTO = new WmsToWCSODTO();
wmsToWCSODTO.setCode("0");
// 创建Gson对象
Gson gson = new GsonBuilder().setPrettyPrinting().create();
// 将对象转换为JSON格式的字符串并格式化输出
String MESSAGE = gson.toJson(wmsToWCSDTO);
wmsToWCSODTO.setMessage(MESSAGE);
return wmsToWCSODTO;
}
/**
@ -75,59 +80,64 @@ public class WmsToWCSmissionServiceImpl implements IWmsToWCSmissionService {
public WmsToWCSDTO packingMaterialsInboundCompleted(WmsToWCSDTO wmsToWCSDTO) {
DynamicDataSourceContextHolder.push("ds_" + wmsToWCSDTO.getFactory());
//wms_raw_order_in_sn
WmsRawOrderInSn wmsRawOrderInSn = wmsRawOrderInSnMapper.selectwmsRfidNo(wmsToWCSDTO);
wmsRawOrderInSn.setWhCode(wmsToWCSDTO.getWarehouseNo());
wmsRawOrderInSn.setWlCode(wmsToWCSDTO.getLocation());
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = new WmsOdsMateStorageNewsSn();
wmsOdsMateStorageNewsSn.setWhCode(wmsRawOrderInSn.getWhCode());//仓库编码
wmsOdsMateStorageNewsSn.setWlCode(wmsRawOrderInSn.getWlCode());//库位编码
wmsOdsMateStorageNewsSn.setMaterialCode(wmsRawOrderInSn.getMaterialCode());
wmsOdsMateStorageNewsSn.setMaterialDesc(wmsRawOrderInSn.getMaterialDesc());
wmsOdsMateStorageNewsSn.setSn(wmsRawOrderInSn.getSn());
wmsOdsMateStorageNewsSn.setAmount(wmsRawOrderInSn.getAmount());
wmsOdsMateStorageNewsSn.setCreateBy("AGV");
wmsOdsMateStorageNewsSn.setActiveFlag("1");
wmsOdsMateStorageNewsSn.setGmtCreate(new Date());
wmsOdsMateStorageNewsSn.setMateOrderInSnId(IdUtils.fastSimpleUUID());
wmsOdsMateStorageNewsSn.setFactoryCode(wmsToWCSDTO.getFactory());
wmsOdsMateStorageNewsSn.setSapFactoryCode(wmsToWCSDTO.getFactory());
//wms_ods_mate_storage_news_sn
wmsOdsMateStorageNewsSnMapper.insertWmsOdsMateStorageNewsSn(wmsOdsMateStorageNewsSn);
//修改库存
//修改库存加库存数量storage_amount = IFNULL(storage_amount, 0) + #{amount},
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
wmsOdsEmStorageNews.setWhCode(wmsRawOrderInSn.getWhCode());//仓库编码
wmsOdsEmStorageNews.setWlCode(wmsRawOrderInSn.getWlCode());//库位编码
wmsOdsEmStorageNews.setMaterialCode(wmsRawOrderInSn.getMaterialCode());
wmsOdsEmStorageNews.setAmount(wmsRawOrderInSn.getAmount());
try {
WmsRawOrderInSn wmsRawOrderInSn = wmsRawOrderInSnMapper.selectwmsRfidNo(wmsToWCSDTO);
wmsRawOrderInSn.setWhCode(wmsToWCSDTO.getWarehouseNo());
wmsRawOrderInSn.setWlCode(wmsToWCSDTO.getLocation());
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = new WmsOdsMateStorageNewsSn();
wmsOdsMateStorageNewsSn.setWhCode(wmsRawOrderInSn.getWhCode());//仓库编码
wmsOdsMateStorageNewsSn.setWlCode(wmsRawOrderInSn.getWlCode());//库位编码
wmsOdsMateStorageNewsSn.setMaterialCode(wmsRawOrderInSn.getMaterialCode());
wmsOdsMateStorageNewsSn.setMaterialDesc(wmsRawOrderInSn.getMaterialDesc());
wmsOdsMateStorageNewsSn.setSn(wmsRawOrderInSn.getSn());
wmsOdsMateStorageNewsSn.setAmount(wmsRawOrderInSn.getAmount());
wmsOdsMateStorageNewsSn.setCreateBy("AGV");
wmsOdsMateStorageNewsSn.setActiveFlag("1");
wmsOdsMateStorageNewsSn.setGmtCreate(new Date());
wmsOdsMateStorageNewsSn.setMateOrderInSnId(IdUtils.fastSimpleUUID());
wmsOdsMateStorageNewsSn.setFactoryCode(wmsToWCSDTO.getFactory());
wmsOdsMateStorageNewsSn.setSapFactoryCode(wmsToWCSDTO.getFactory());
//wms_ods_mate_storage_news_sn
wmsOdsMateStorageNewsSnMapper.insertWmsOdsMateStorageNewsSn(wmsOdsMateStorageNewsSn);
//修改库存
//修改库存加库存数量storage_amount = IFNULL(storage_amount, 0) + #{amount},
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
wmsOdsEmStorageNews.setWhCode(wmsRawOrderInSn.getWhCode());//仓库编码
wmsOdsEmStorageNews.setWlCode(wmsRawOrderInSn.getWlCode());//库位编码
wmsOdsEmStorageNews.setMaterialCode(wmsRawOrderInSn.getMaterialCode());
wmsOdsEmStorageNews.setAmount(wmsRawOrderInSn.getAmount());
//添加库存--这个要有个判断有没有这个库存如果没有的话,就插入
WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectByWhCodeAndMate(wmsOdsEmStorageNews);
if (wmsOdsMateStorageNews == null) {
WmsOdsMateStorageNews wmsOdsMateStorageNews1 = new WmsOdsMateStorageNews();
wmsOdsMateStorageNews1.setStorageId(IdUtils.fastSimpleUUID());
wmsOdsMateStorageNews1.setWhCode(wmsRawOrderInSn.getWhCode());
wmsOdsMateStorageNews1.setWlCode(wmsRawOrderInSn.getWlCode());
wmsOdsMateStorageNews1.setAmount(wmsRawOrderInSn.getAmount());
// wmsOdsMateStorageNews1.setStorageAmount(wmsRawOrderInSn.getAmount());
wmsOdsMateStorageNews1.setMaterialCode(wmsRawOrderInSn.getMaterialCode());
wmsOdsMateStorageNews1.setMaterialDesc(wmsRawOrderInSn.getMaterialDesc());
wmsOdsMateStorageNews1.setStorageType("BC");
wmsOdsMateStorageNews1.setCreateBy("wcs");
wmsOdsMateStorageNews1.setGmtCreate(new Date());
wmsOdsMateStorageNews1.setActiveFlag("1");
wmsOdsMateStorageNews1.setFactoryCode(wmsToWCSDTO.getFactory());
wmsOdsMateStorageNews1.setSapFactoryCode(wmsToWCSDTO.getFactory());
wmsOdsMateStorageNews1.setUserDefined1(wmsRawOrderInSn.getUserDefined4());//单位
wmsOdsMateStorageNewsMapper.insertWmsOdsMateStorageNews(wmsOdsMateStorageNews1);
} else {
wmsOdsMateStorageNewsSnMapper.updateAdd(wmsOdsEmStorageNews);
//添加库存--这个要有个判断有没有这个库存如果没有的话,就插入
WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectByWhCodeAndMate(wmsOdsEmStorageNews);
if (wmsOdsMateStorageNews == null) {
WmsOdsMateStorageNews wmsOdsMateStorageNews1 = new WmsOdsMateStorageNews();
wmsOdsMateStorageNews1.setStorageId(IdUtils.fastSimpleUUID());
wmsOdsMateStorageNews1.setWhCode(wmsRawOrderInSn.getWhCode());
wmsOdsMateStorageNews1.setWlCode(wmsRawOrderInSn.getWlCode());
wmsOdsMateStorageNews1.setAmount(wmsRawOrderInSn.getAmount());
// wmsOdsMateStorageNews1.setStorageAmount(wmsRawOrderInSn.getAmount());
wmsOdsMateStorageNews1.setMaterialCode(wmsRawOrderInSn.getMaterialCode());
wmsOdsMateStorageNews1.setMaterialDesc(wmsRawOrderInSn.getMaterialDesc());
wmsOdsMateStorageNews1.setStorageType("BC");
wmsOdsMateStorageNews1.setCreateBy("wcs");
wmsOdsMateStorageNews1.setGmtCreate(new Date());
wmsOdsMateStorageNews1.setActiveFlag("1");
wmsOdsMateStorageNews1.setFactoryCode(wmsToWCSDTO.getFactory());
wmsOdsMateStorageNews1.setSapFactoryCode(wmsToWCSDTO.getFactory());
wmsOdsMateStorageNews1.setUserDefined1(wmsRawOrderInSn.getUserDefined4());//单位
wmsOdsMateStorageNewsMapper.insertWmsOdsMateStorageNews(wmsOdsMateStorageNews1);
} else {
wmsOdsMateStorageNewsSnMapper.updateAdd(wmsOdsEmStorageNews);
}
//修改托盘记录为入库
wmsRawOrderInSnMapper.updateU1Byid(wmsRawOrderInSn);
wmsToWCSDTO.setCode("0");
wmsToWCSDTO.setMessage("OK");
return wmsToWCSDTO;
}finally {
DynamicDataSourceContextHolder.poll();
}
//修改托盘记录为入库
wmsRawOrderInSnMapper.updateU1Byid(wmsRawOrderInSn);
wmsToWCSDTO.setCode("0");
wmsToWCSDTO.setMessage("OK");
return wmsToWCSDTO;
}
/**
@ -140,58 +150,68 @@ public class WmsToWCSmissionServiceImpl implements IWmsToWCSmissionService {
public WmsToWCSDTO packingMaterialsOutBoundCompleted(WmsToWCSDTO wcsdto) {
//记录明细消减库存--wms_raw_mission_out-
DynamicDataSourceContextHolder.push("ds_" + wcsdto.getFactory());
try {
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = wmsOdsMateStorageNewsSnMapper.selectwmsRfidNotwo(wcsdto);
WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = wmsOdsMateStorageNewsSnMapper.selectwmsRfidNotwo(wcsdto);
//user_defined1='2'也就是查询的已经入库的托盘记录,再之后要进行标记备注5为1.不为空即是这,
// 或者直接在库存明细中查询这个托盘,然后后面对这条托盘明细进行标记处理,表示已经出库--用这个
//user_defined1='2'也就是查询的已经入库的托盘记录,再之后要进行标记备注5为1.不为空即是这,
// 或者直接在库存明细中查询这个托盘,然后后面对这条托盘明细进行标记处理,表示已经出库--用这个
//修改库存
//修改库存
//修改库存加库存数量storage_amount = IFNULL(storage_amount, 0) + #{amount},
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
wmsOdsEmStorageNews.setWhCode(wmsOdsMateStorageNewsSn.getWhCode());//仓库编码
wmsOdsEmStorageNews.setWlCode(wmsOdsMateStorageNewsSn.getWlCode());//库位编码
wmsOdsEmStorageNews.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode());
wmsOdsEmStorageNews.setAmount(wmsOdsMateStorageNewsSn.getAmount());
wmsOdsMateStorageNewsSnMapper.updatekdd(wmsOdsEmStorageNews);
wmsOdsMateStorageNewsSn.setUserDefined1("1");
wmsOdsMateStorageNewsSnMapper.updateWmsOdsMateStorageNewsSn(wmsOdsMateStorageNewsSn);
return wcsdto;
}finally {
DynamicDataSourceContextHolder.poll();
}
//修改库存加库存数量storage_amount = IFNULL(storage_amount, 0) + #{amount},
WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews();
wmsOdsEmStorageNews.setWhCode(wmsOdsMateStorageNewsSn.getWhCode());//仓库编码
wmsOdsEmStorageNews.setWlCode(wmsOdsMateStorageNewsSn.getWlCode());//库位编码
wmsOdsEmStorageNews.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode());
wmsOdsEmStorageNews.setAmount(wmsOdsMateStorageNewsSn.getAmount());
wmsOdsMateStorageNewsSnMapper.updatekdd(wmsOdsEmStorageNews);
wmsOdsMateStorageNewsSn.setUserDefined1("1");
wmsOdsMateStorageNewsSnMapper.updateWmsOdsMateStorageNewsSn(wmsOdsMateStorageNewsSn);
return wcsdto;
}
@Override
public WmsToWCSODTO finishedProductRequestInbound(WmsToWCSDTO wcsdto) {
DynamicDataSourceContextHolder.push("ds_" + wcsdto.getFactory());
//其中wcsdto的rfidNo属性先传托盘号原因---还没有自动码垛
WmsToWCSDTO wmsToWCSDTO = wmsRawOrderInMapper.finishedProductRequestInbound(wcsdto);
try {
//其中wcsdto的rfidNo属性先传托盘号原因---还没有自动码垛
WmsToWCSDTO wmsToWCSDTO = wmsRawOrderInMapper.finishedProductRequestInbound(wcsdto);
List<String> items=wmsRawOrderInMapper.finishedProductRequestInboundsn(wcsdto);
// wmsToWCSDTO.set//
if (wmsToWCSDTO == null) {
WmsToWCSODTO wms = new WmsToWCSODTO();
wms.setCode("0");
wms.setReqCode(wcsdto.getReqCode());
wms.setMessage("OK");
return wms;
List<String> items=wmsRawOrderInMapper.finishedProductRequestInboundsn(wcsdto);
// wmsToWCSDTO.set//
if (wmsToWCSDTO == null) {
WmsToWCSODTO wms = new WmsToWCSODTO();
wms.setCode("0");
wms.setReqCode(wcsdto.getReqCode());
wms.setMessage("OK");
return wms;
}
wmsToWCSDTO.setQualityStatus("1");
wmsToWCSDTO.setItems(items);
wmsToWCSDTO.setCode("0");
wmsToWCSDTO.setReqCode(wcsdto.getReqCode());
wmsToWCSDTO.setMessage("OK");
WmsToWCSODTO wmsToWCSODTO = new WmsToWCSODTO();
wmsToWCSODTO.setCode("0");
// 创建Gson对象
Gson gson = new GsonBuilder().setPrettyPrinting().create();
// 将对象转换为JSON格式的字符串并格式化输出
String MESSAGE = gson.toJson(wmsToWCSDTO);
wmsToWCSODTO.setMessage(MESSAGE);
return wmsToWCSODTO;
}finally {
DynamicDataSourceContextHolder.poll();
}
wmsToWCSDTO.setQualityStatus("1");
wmsToWCSDTO.setItems(items);
wmsToWCSDTO.setCode("0");
wmsToWCSDTO.setReqCode(wcsdto.getReqCode());
wmsToWCSDTO.setMessage("OK");
WmsToWCSODTO wmsToWCSODTO = new WmsToWCSODTO();
wmsToWCSODTO.setCode("0");
// 创建Gson对象
Gson gson = new GsonBuilder().setPrettyPrinting().create();
// 将对象转换为JSON格式的字符串并格式化输出
String MESSAGE = gson.toJson(wmsToWCSDTO);
wmsToWCSODTO.setMessage(MESSAGE);
return wmsToWCSODTO;
}
@Override
@ -249,8 +269,13 @@ public class WmsToWCSmissionServiceImpl implements IWmsToWCSmissionService {
// //修改托盘记录为入库
// wmsRawOrderInSnMapper.updateU1Byid(wmsRawOrderInSn);
//在入库手持那里已经入了他没有用rfid而是托盘但是成品手持下线入库在下下线入库那里已经入了除非后续用自动码垛不用手持的下线入库
wmsToWCSDTO.setCode("0");
wmsToWCSDTO.setMessage("OK");
try {
wmsToWCSDTO.setCode("0");
wmsToWCSDTO.setMessage("OK");
}finally {
DynamicDataSourceContextHolder.poll();
}
return wmsToWCSDTO;
}
@ -258,26 +283,27 @@ public class WmsToWCSmissionServiceImpl implements IWmsToWCSmissionService {
public WmsToWCSDTO finishedProductOutBoundCompleted(WmsToWCSDTO wcsdto) {
//记录明细消减库存--wms_raw_mission_out-
DynamicDataSourceContextHolder.push("ds_" + wcsdto.getFactory());
WmsSellOutEmbryo wmsSellOutEmbryo=new WmsSellOutEmbryo();
wmsSellOutEmbryo.setDeliveryOrder(wcsdto.getOrderNo());//查询对应的销售订单
List<WmsSellOutEmbryo> wmsSellOutEmbryos = wmsSellOutEmbryoMapper.selectWmsSellOutEmbryoList(wmsSellOutEmbryo);
WmsSellOutEmbryo wmsSellOutEmbryo1=wmsSellOutEmbryos.get(0);
try {
WmsSellOutEmbryo wmsSellOutEmbryo=new WmsSellOutEmbryo();
wmsSellOutEmbryo.setDeliveryOrder(wcsdto.getOrderNo());//查询对应的销售订单
List<WmsSellOutEmbryo> wmsSellOutEmbryos = wmsSellOutEmbryoMapper.selectWmsSellOutEmbryoList(wmsSellOutEmbryo);
WmsSellOutEmbryo wmsSellOutEmbryo1=wmsSellOutEmbryos.get(0);
WmsToWCSDTO wmsToWCSDTO = wmsRawOrderInMapper.finishedProductRequestInbound(wcsdto);//根据托盘查询明细
//修改销售订单
String tem= wmsToWCSDTO.getQty();
BigDecimal OutQuantity= wmsSellOutEmbryo1.getOutQuantity().add(new BigDecimal(tem));//2
int result = wmsSellOutEmbryo1.getPlanQuantity().compareTo(OutQuantity);
WmsSellOutEmbryo wmsSellOutEmbryoUpdate=new WmsSellOutEmbryo();
if (result == 0){//出库完
wmsSellOutEmbryoUpdate.setStatus("1");
}else {
wmsSellOutEmbryoUpdate.setStatus("0");
}
wmsSellOutEmbryoUpdate.setDeliveryOrder(wcsdto.getOrderNo());
wmsSellOutEmbryoUpdate.setOutQuantity(OutQuantity);
wmsSellOutEmbryoMapper.updateWmsSellOutEmbryotwo(wmsSellOutEmbryoUpdate);
//订单修改完成
WmsToWCSDTO wmsToWCSDTO = wmsRawOrderInMapper.finishedProductRequestInbound(wcsdto);//根据托盘查询明细
//修改销售订单
String tem= wmsToWCSDTO.getQty();
BigDecimal OutQuantity= wmsSellOutEmbryo1.getOutQuantity().add(new BigDecimal(tem));//2
int result = wmsSellOutEmbryo1.getPlanQuantity().compareTo(OutQuantity);
WmsSellOutEmbryo wmsSellOutEmbryoUpdate=new WmsSellOutEmbryo();
if (result == 0){//出库完
wmsSellOutEmbryoUpdate.setStatus("1");
}else {
wmsSellOutEmbryoUpdate.setStatus("0");
}
wmsSellOutEmbryoUpdate.setDeliveryOrder(wcsdto.getOrderNo());
wmsSellOutEmbryoUpdate.setOutQuantity(OutQuantity);
wmsSellOutEmbryoMapper.updateWmsSellOutEmbryotwo(wmsSellOutEmbryoUpdate);
//订单修改完成
//
WmsProductPutTrayCode wmsProductPutTrayCode=new WmsProductPutTrayCode();
//解除绑定
@ -315,6 +341,10 @@ public class WmsToWCSmissionServiceImpl implements IWmsToWCSmissionService {
wcsdto.setCode("0");
wcsdto.setMessage("OK");
return wcsdto;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override

Loading…
Cancel
Save