diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/BoardDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/BoardDTO.java index 589e7dcb6..0a5645b0c 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/BoardDTO.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/BoardDTO.java @@ -1,29 +1,58 @@ package com.op.system.api.domain.dto; +import com.op.system.api.domain.quality.QcCheckTaskDTO; + import java.util.List; public class BoardDTO { - private String factory; - private String ymd; - private String equCode; - private String equName; - private Integer totalNum; - private String equTypeCode; - private String equTypeName; - private String shiftId; - private String factoryCode; - private String equipmentTypeCode; - private String planProduction; - private String actProduction; - private List plans; - private List acts; - private List days; - private String startTime; - private String endTime; - private String productName; - private String productCode; - private String workorderCodeSap; - private String unit; + private String factory; + private String ymd; + private String equCode; + private String equName; + private Integer totalNum; + private String equTypeCode; + private String equTypeName; + private String shiftId; + private String factoryCode; + private String equipmentTypeCode; + private String planProduction; + private String actProduction; + private List plans; + private List acts; + private List days; + private String startTime; + private String endTime; + private String productName; + private String productCode; + private String workorderCodeSap; + private String unit; + private String taskSampleNum; + private String taskNum; + private List checkList; + + public List getCheckList() { + return checkList; + } + + public void setCheckList(List checkList) { + this.checkList = checkList; + } + + public String getTaskSampleNum() { + return taskSampleNum; + } + + public void setTaskSampleNum(String taskSampleNum) { + this.taskSampleNum = taskSampleNum; + } + + public String getTaskNum() { + return taskNum; + } + + public void setTaskNum(String taskNum) { + this.taskNum = taskNum; + } public String getWorkorderCodeSap() { return workorderCodeSap; diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/wms/wmsReportWork.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/wms/wmsReportWork.java index 6db083217..95396223c 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/wms/wmsReportWork.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/wms/wmsReportWork.java @@ -50,6 +50,17 @@ public class wmsReportWork extends BaseEntity { private String unit; private String SAPstatus; private String SAPmessage; + /** 生产工单编码 */ + + private String SAPquantity; + + public String getSAPquantity() { + return SAPquantity; + } + + public void setSAPquantity(String SAPquantity) { + this.SAPquantity = SAPquantity; + } public String getSAPstatus() { return SAPstatus; diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesBoardController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesBoardController.java index 8c1f9f8c8..2819bf5f3 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesBoardController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesBoardController.java @@ -57,4 +57,17 @@ public class MesBoardController extends BaseController { } return success(iMesBoradService.getProductionLineInfo(mesBoard)); } + + /**工单详情**/ + @PostMapping("/getPorOrderList") + public AjaxResult getPorOrderList(@RequestBody BoardDTO mesBoard) { + if (StringUtils.isBlank(mesBoard.getFactoryCode())) { + return error("[factoryCode] 不能为空"); + } + if (StringUtils.isBlank(mesBoard.getEquCode())) { + return error("[equCode] 不能为空"); + } + return success(iMesBoradService.getPorOrderList(mesBoard)); + } + } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java index 92ea2b92e..9b2a8cb39 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java @@ -21,6 +21,7 @@ import com.op.common.core.utils.uuid.IdUtils; import com.op.common.datasource.creator.DynamicDatasourceCreator; import com.op.mes.domain.*; import com.op.mes.domain.dto.LineChartDto; +import com.op.mes.domain.dto.LineChartSeriesDto; import com.op.mes.domain.dto.SysFactoryDto; import com.op.system.api.domain.DataSourcePropertyDTO; import com.op.system.api.domain.SysUser; @@ -249,12 +250,28 @@ public class MesReportWorkController extends BaseController { return mesReportWorkService.getWorkcenterList(mesDailyReport); } - /**首页柱状图**/ + /**首页柱状图(产品太多了,有点乱,不用了)**/ @GetMapping("/getLineChartData") public LineChartDto getLineChartData(MesReportProduction mesReportProduction) { return mesReportWorkService.getLineChartData(mesReportProduction); } + /**首页-各线体当日计划产量(横向柱状图)**/ + @PostMapping("/getLineProData") + public List getLineProData(MesReportWork dto) { + return mesReportWorkService.getLineProData(dto); + } + /**当月各日实际产量(单折线图)**/ + @GetMapping("/getMonthProData") + public LineChartDto getMonthProData(MesReportProduction mesReportProduction) { + return mesReportWorkService.getMonthProData(mesReportProduction); + } + + /**首页-当日产品产量(饼图)**/ + @PostMapping("/getProductProData") + public List getProductProData(MesReportWork dto) { + return mesReportWorkService.getProductProData(dto); + } /** * 小时产量表头 diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/LineChartDto.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/LineChartDto.java index 251246ff3..c155fcf94 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/LineChartDto.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/LineChartDto.java @@ -12,6 +12,15 @@ public class LineChartDto { private List seriesNames; private List xAxisDatas; private List seriesDatas; + private List yDatas; + + public List getyDatas() { + return yDatas; + } + + public void setyDatas(List yDatas) { + this.yDatas = yDatas; + } public List getSeriesNames() { return seriesNames; diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java index e904a1aa1..f435ad489 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java @@ -3,6 +3,7 @@ package com.op.mes.mapper; import com.op.common.core.domain.BaseFileData; import com.op.mes.domain.MesBoard; import com.op.mes.domain.MesReportWork; +import com.op.mes.domain.ProOrderWorkorder; import com.op.mes.domain.dto.BaseEquipmentDto; import com.op.mes.domain.dto.LGInfoDto; import com.op.system.api.domain.SysDept; @@ -10,6 +11,7 @@ import com.op.system.api.domain.SysSapLog; import com.op.system.api.domain.dto.BoardDTO; import com.op.system.api.domain.dto.WCSDTO; import com.op.system.api.domain.dto.WCSDataItemsDTO; +import com.op.system.api.domain.quality.QcCheckTaskDTO; import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -83,4 +85,10 @@ public interface MesMapper { BoardDTO getWorkOrder(BoardDTO boardDTO); @MapKey("productDate") Map getProduction15DaysAct(BoardDTO boardDTO); + + QcCheckTaskDTO getTaskInfo(BoardDTO boardDTO); + + List getCheckList(BoardDTO boardDTO); + + List getPorOrderList(BoardDTO boardDTO); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java index 595d4cbcf..b7c9cd2dc 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Map; import com.op.mes.domain.*; +import com.op.mes.domain.dto.LineChartSeriesDto; import com.op.mes.domain.dto.SysFactoryDto; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.device.EquEquipmentDTO; @@ -88,6 +89,9 @@ public interface MesReportWorkMapper { @MapKey("nameDate") Map getLineChartsDatas(MesReportProduction mesReportProduction); + @MapKey("name") + Map getDayOfMonthDatas(MesReportProduction mesReportProduction); + List getLineChartsNames(MesReportProduction mesReportProduction); @MapKey("equCodeHour") @@ -147,4 +151,8 @@ public interface MesReportWorkMapper { void updateReportRemark(@Param("list") List mesReportWork); BigDecimal getReportRate(String productCode); + + List getLineProData(MesReportWork dto); + + List getProductProData(MesReportWork dto); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesBoradService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesBoradService.java index 686841f86..d0dcf839a 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesBoradService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesBoradService.java @@ -1,6 +1,7 @@ package com.op.mes.service; import com.op.common.core.web.domain.AjaxResult; +import com.op.mes.domain.ProOrderWorkorder; import com.op.system.api.domain.dto.BoardDTO; import java.util.List; @@ -13,4 +14,6 @@ public interface IMesBoradService { public BoardDTO getProduction15Days(BoardDTO mesBoard); public Map getProductionLineInfo(BoardDTO mesBoard); + + public List getPorOrderList(BoardDTO mesBoard); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java index db5c06ce4..a3f37b902 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java @@ -7,6 +7,7 @@ import com.op.common.core.domain.R; import com.op.common.core.web.domain.AjaxResult; import com.op.mes.domain.*; import com.op.mes.domain.dto.LineChartDto; +import com.op.mes.domain.dto.LineChartSeriesDto; import com.op.mes.domain.dto.SysFactoryDto; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.device.EquEquipmentDTO; @@ -115,4 +116,10 @@ public interface IMesReportWorkService { int deleteBomRowNow(String id); List getWarehouseList(MesReportWorkConsume workConsume); + + List getLineProData(MesReportWork dto); + + List getProductProData(MesReportWork dto); + + LineChartDto getMonthProData(MesReportProduction mesReportProduction); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java index 43e7de7ca..83345e771 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java @@ -358,6 +358,12 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { if(sHzWorks==null){ return R.fail("未查询到一层报工单"); } + //查询base_product的report_rate//单层项向sap报工的数量=上位机报工数量*报工汇率 + BigDecimal reportRate = mesReportWorkMapper.getReportRate(workOrders.get(0).getProductCode()); + if(reportRate != null){ + BigDecimal newQuantity = sHzWorks.getQuantityFeedback().multiply(reportRate); + sHzWorks.setQuantityFeedback(newQuantity); + } //机器=sum(工时数) 【设备开机时间】 Sac1 //人工 = sum(每批的工时数*每批用人数) Sac2 //子工单报工 diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesBoradServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesBoradServiceImpl.java index 498247d8b..522d109b6 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesBoradServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesBoradServiceImpl.java @@ -1,15 +1,19 @@ package com.op.mes.service.impl; import com.alibaba.fastjson2.JSONObject; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.StringUtils; import com.op.common.core.web.domain.AjaxResult; import com.op.mes.domain.MesReportWork; +import com.op.mes.domain.ProOrderWorkorder; import com.op.mes.mapper.MesMapper; import com.op.mes.service.IMesBoradService; import com.op.system.api.domain.dto.BoardDTO; import com.op.system.api.domain.mes.ProOrderWorkorderDTO; +import com.op.system.api.domain.quality.QcCheckTaskDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -103,11 +107,40 @@ public class MesBoradServiceImpl implements IMesBoradService { BoardDTO workOrder = mesMapper.getWorkOrder(boardDTO); dtoMap.put("workOrder",workOrder); + QcCheckTaskDTO taskDTO = mesMapper.getTaskInfo(boardDTO); + BoardDTO task2 = new BoardDTO(); + if(taskDTO.getQuality() != null){ + task2.setTaskNum(taskDTO.getQuality().toString()); + }else{ + task2.setTaskNum("0"); + } + dtoMap.put("taskNum",task2);//巡检次数 + BoardDTO task3 = new BoardDTO(); + if(taskDTO.getSampleQuality() != null){ + task3.setTaskSampleNum(taskDTO.getSampleQuality().toString()); + }else{ + task3.setTaskSampleNum("0"); + } + dtoMap.put("taskSampleNum",task3);//巡检抽样数量 + + BoardDTO task4 = new BoardDTO(); + List checkList = mesMapper.getCheckList(boardDTO); + if(!CollectionUtils.isEmpty(checkList)){ + task4.setCheckList(checkList); + } + dtoMap.put("piedata",task4);//巡检结果 return dtoMap; } + @Override + public List getPorOrderList(BoardDTO boardDTO) { + DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode()); + List dtos = mesMapper.getPorOrderList(boardDTO); + return dtos; + } + //获取当前日期前几天 private List getDays(int dayNum){ List days = new ArrayList<>(); diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java index 21e35346a..03f5eccd9 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java @@ -356,8 +356,14 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { .setScale(2, BigDecimal.ROUND_HALF_UP); dto.setCompleteRate(completeRate.toString()+"%"); //工时标准=盒量/标准数量 - BigDecimal workTimeStandar = new BigDecimal(dto.getQuantityAct()) - .divide(new BigDecimal(dto.getIei()),1, BigDecimal.ROUND_UP); + BigDecimal workTimeStandar = null; + if(StringUtils.isNotBlank(dto.getIei())){ + workTimeStandar = new BigDecimal(dto.getQuantityAct()) + .divide(new BigDecimal(dto.getIei()),1, BigDecimal.ROUND_UP); + }else{ + workTimeStandar = new BigDecimal("0"); + } + dto.setWorkTimeStandar(workTimeStandar.toString()); //工时产线效率=工时标准/工时实际 BigDecimal productivity = new BigDecimal(dto.getWorkTimeStandar()) @@ -458,6 +464,54 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { lineChartDto.setSeriesDatas(seriesDatas); return lineChartDto; } + + @Override + @DS("#header.poolName") + public List getLineProData(MesReportWork dto) { + List dtos = mesReportWorkMapper.getLineProData(dto); + return dtos; + } + + @Override + @DS("#header.poolName") + public List getProductProData(MesReportWork dto) { + List dtos = mesReportWorkMapper.getProductProData(dto); + return dtos; + } + + @Override + @DS("#header.poolName") + public LineChartDto getMonthProData(MesReportProduction mesReportProduction) { + LineChartDto lineChartDto = new LineChartDto(); + + 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); + mesReportProduction.setProductDateStart(startTime); + mesReportProduction.setProductDateEnd(endTime); + + //日期名称数组 + List xAxisDatas = getDays(startTime,endTime); + lineChartDto.setxAxisDatas(xAxisDatas); + Map productdatas = mesReportWorkMapper.getLineChartsDatas(mesReportProduction); + //值 + List datas = new ArrayList<>(); + for(String dayStr:xAxisDatas) { + MesReportProduction data0 = productdatas.get(dayStr); + if (data0 != null) { + datas.add(data0.getQuantity()); + } else { + datas.add("0"); + } + } + lineChartDto.setyDatas(datas); + return lineChartDto; + } + @DS("#header.poolName") @Override public List getHourProductionList(MesHourReport mesHourReport) { diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml index b1b8a35b4..c71f287e1 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml @@ -301,6 +301,7 @@ where pow.del_flag='0' and pow.workorder_name = #{equCode} and CONVERT(DATE, pow.product_date) BETWEEN DATEADD(DAY, -15, CONVERT(DATE, GETDATE())) AND CONVERT(DATE, GETDATE()) + and pow.parent_order='0' group by pow.product_date + + + diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml index 0abe5b7be..b9bb770b8 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml @@ -294,7 +294,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sum(mrw.quantity) quantity from( select - product_name+CONVERT(varchar(10),feedback_time, 120) nameDate, + CONVERT(varchar(10),feedback_time, 120) nameDate, product_code productCode, product_name productName, CONVERT(varchar(10),feedback_time, 120) feedbackTime, @@ -303,10 +303,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where CONVERT(varchar(10),feedback_time, 120) >= #{productDateStart} and #{productDateEnd} >= CONVERT(varchar(10),feedback_time, 120) - and parent_order = '0' + and parent_order = '0' and del_flag = '0' )mrw group by mrw.nameDate,mrw.productCode,mrw.productName,mrw.feedbackTime + @@ -701,6 +719,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where product_code = #{productCode} and del_flag = '0' + + insert into mes_report_work diff --git a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java index d65770e3b..305a6c3fa 100644 --- a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java +++ b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java @@ -95,7 +95,6 @@ public class OpenController extends BaseController { @PostMapping(value = "/createCheckProduceTask") public AjaxResult createCheckProduceTask(@RequestBody QcCheckTaskProduceDTO qcCheckTaskProduce) { - if (StringUtils.isBlank(qcCheckTaskProduce.getOrderNo())) { return error("[orderNo]不能为空"); } diff --git a/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java b/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java index 3bd8ad5f0..53e365447 100644 --- a/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java +++ b/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java @@ -11,6 +11,7 @@ import com.op.system.api.domain.quality.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; /** @@ -82,5 +83,7 @@ public interface OpenMapper { public int addCheckUsers(@Param("list") List users); String getSampNum(QcCheckTaskProduceDTO sampQua); + + Date getLastTask(QcCheckTaskProduceDTO qcCheckTaskProduce); } diff --git a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java index 775775842..645599f96 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java @@ -19,12 +19,6 @@ import com.op.system.api.domain.dto.WCSDataDTO; import com.op.system.api.domain.mes.ProRfidProcessDetail; import com.op.system.api.domain.quality.*; import org.apache.commons.lang.StringUtils; - -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; import java.time.LocalDateTime; import java.time.Duration; import org.slf4j.Logger; @@ -309,16 +303,12 @@ public class OpenServiceImpl implements OpenService { public int insertQcCheckTaskProduce(QcCheckTaskProduceDTO qcCheckTaskProduce) { DynamicDataSourceContextHolder.push("ds_" + qcCheckTaskProduce.getFactoryCode()); - - // 创建两个日期时间对象 -// LocalDateTime dateTime1 = LocalDateTime.of(2023, 1, 1, 10, 30); // 2023年1月1日 10:30 -// LocalDateTime dateTime2 = LocalDateTime.now(); // 2023年1月2日 11:45 -// // 计算分钟差 -// long minutesBetween = Duration.between(dateTime1, dateTime2).toMinutes(); -// if(minutesBetween<=1){ -// logger.info("++++++++++++检验任务1分钟内生成过,不再重复创建++++++++++++++"); -// return 0; -// } + // 1分钟不允许存在两条 + Date lastData = openMapper.getLastTask(qcCheckTaskProduce); + if(this.oneMinHas(lastData)){ + logger.info("【重复创建首检任务】orderNo:"+qcCheckTaskProduce.getOrderNo()+";"+"incomeBatchNo:"+qcCheckTaskProduce.getIncomeBatchNo()); + return 0; + } qcCheckTaskProduce.setCreateTime(DateUtils.getNowDate()); @@ -428,11 +418,7 @@ public class OpenServiceImpl implements OpenService { String requestName = paramMap.get("requestName").toString(); String workflowId = paramMap.get("workflowId").toString(); String mainObject = paramMap.get("mainObject").toString(); -// String postData = "user=" + user + -// "&requestLevel=" + requestLevel + -// "&requestName=" + requestName + -// "&workflowId=" + workflowId + -// "&mainObject=" + mainObject; + // Building the postData string using StringBuilder StringBuilder postDataBuilder = new StringBuilder(); @@ -443,11 +429,10 @@ public class OpenServiceImpl implements OpenService { .append("&mainObject=").append(URLEncoder.encode(mainObject, StandardCharsets.UTF_8.toString())); if (Constants.WORKFLOWID_ZL0020.equals(workflowId)) { String details = paramMap.get("details").toString(); -// postData += "&details=" + details; postDataBuilder.append("&details=").append(URLEncoder.encode(details, StandardCharsets.UTF_8.toString())); } String postData = postDataBuilder.toString(); - String result=HttpUtils.sendPostOA(oa_url,postData); + String result = HttpUtils.sendPostOA(oa_url, postData); logger.info(result); //返回示例{"result":"0","info":"成功","requestid":"2193799"} Map resultMap=JSONObject.parseObject(result); @@ -516,4 +501,35 @@ public class OpenServiceImpl implements OpenService { } } + + protected Boolean oneMinHas(Date lastData){ + if(lastData != null){ + int year= Integer.parseInt(String.format("%tY", lastData)); + int mon= Integer.parseInt(String .format("%tm", lastData)); + int day= Integer.parseInt(String .format("%td", lastData)); + int h= Integer.parseInt(String .format("%tH", lastData)); + int m= Integer.parseInt(String .format("%tM", lastData)); + + LocalDateTime dateTime1 = LocalDateTime.of(year, mon, day, h, m); // 2023年1月1日 10:30 + LocalDateTime dateTime2 = LocalDateTime.now(); // 2023年1月2日 11:45 + // 计算分钟差 + long minutesBetween = Duration.between(dateTime1, dateTime2).toMinutes(); + if(minutesBetween<=1){ + logger.info("++++++++++++检验任务1分钟内生成过,不再重复创建++++++++++++++"); + return true; + } + } + return false; + } + + public static void main(String args[]){ + // 创建两个日期时间对象 + LocalDateTime dateTime1 = LocalDateTime.of(2024, 4, 18, 9, 33); // 2023年1月1日 10:30 + LocalDateTime dateTime2 = LocalDateTime.now(); // 2023年1月2日 11:45 + // 计算分钟差 + long minutesBetween = Duration.between(dateTime1, dateTime2).toMinutes(); + if(minutesBetween<=1){ + System.out.println("++++++++++++检验任务1分钟内生成过,不再重复创建++++++++++++++"); + } + } } diff --git a/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml b/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml index 7255db336..099a2a96a 100644 --- a/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml +++ b/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml @@ -207,6 +207,13 @@ where end_value>= #{quality} and #{quality}>=start_value and del_flag = '0' and check_type = #{checkType} + insert into equ_repair_order diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java index 25dd78a50..26201d52c 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java @@ -285,19 +285,19 @@ public class ProOrderServiceImpl implements IProOrderService { //20231127,加入belongWorkOrder概念 belongWorkOrder = workOrder.getWorkorderCode(); - //推送sap订单更新信息 - SapShopOrderQuery sapChange = new SapShopOrderQuery(); - sapChange.setAufnr(proOrder.getOrderCode());//母订单号 - BigDecimal newSapQuantityNum = new BigDecimal(proOrder.getQuantity()) - .subtract(new BigDecimal(proOrder.getQuantitySplit())); - sapChange.setQuantity(newSapQuantityNum.toString());//母订单新数量 - logger.info("【成品订单拆分】母订单"+proOrder.getOrderCode()+ - "订单数量变更:修改前"+proOrder.getQuantity()+","+ - ",已拆数量"+proOrder.getQuantitySplit()+","+ - "给sap汇报数量"+newSapQuantityNum.toString()); - R rSapChange = remoteSapService.shopUpdateSync(sapChange);//sap只能同步指定日期的数据 - logger.info("母订单"+proOrder.getOrderCode()+ - "订单数量变更结果:"+rSapChange.getCode()+","+rSapChange.getMsg()); +// //推送sap订单更新信息 +// SapShopOrderQuery sapChange = new SapShopOrderQuery(); +// sapChange.setAufnr(proOrder.getOrderCode());//母订单号 +// BigDecimal newSapQuantityNum = new BigDecimal(proOrder.getQuantity()) +// .subtract(new BigDecimal(proOrder.getQuantitySplit())); +// sapChange.setQuantity(newSapQuantityNum.toString());//母订单新数量 +// logger.info("【成品订单拆分】母订单"+proOrder.getOrderCode()+ +// "订单数量变更:修改前"+proOrder.getQuantity()+","+ +// ",已拆数量"+proOrder.getQuantitySplit()+","+ +// "给sap汇报数量"+newSapQuantityNum.toString()); +// R rSapChange = remoteSapService.shopUpdateSync(sapChange);//sap只能同步指定日期的数据 +// logger.info("母订单"+proOrder.getOrderCode()+ +// "订单数量变更结果:"+rSapChange.getCode()+","+rSapChange.getMsg()); } workOrder.setProductCode(productNameInfo.getProdCode()); workOrder.setProductName(productNameInfo.getProdDesc()); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java index abd919ba4..ca6996915 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java @@ -82,14 +82,14 @@ public class QcCheckTaskIncomeController extends BaseController { public TableDataInfo list(QcCheckTaskIncome qcCheckTaskIncome) { //默认时间范围T 00:00:00~T+1 00:00:00 - if (StringUtils.isEmpty(qcCheckTaskIncome.getIncomeTimeStart())) { + /*if (StringUtils.isEmpty(qcCheckTaskIncome.getIncomeTimeStart())) { qcCheckTaskIncome.setIncomeTimeStart(DateUtils.getDate() + " 00:00:00");//start LocalDate date = LocalDate.now(); LocalDate dateEnd = date.plusDays(1); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String dateEndStr = dtf.format(dateEnd) + " 00:00:00"; qcCheckTaskIncome.setIncomeTimeEnd(dateEndStr);//end - } + }*/ // if(StringUtils.isEmpty(qcCheckTaskIncome.getCheckTimeStart())){ // qcCheckTaskIncome.setCheckTimeStart(qcCheckTaskIncome.getIncomeTimeStart());//start @@ -110,14 +110,14 @@ public class QcCheckTaskIncomeController extends BaseController { public void export(HttpServletResponse response, QcCheckTaskIncome qcCheckTaskIncome) { //默认时间范围T 00:00:00~T+1 00:00:00 - if (StringUtils.isEmpty(qcCheckTaskIncome.getIncomeTimeStart())) { + /*if (StringUtils.isEmpty(qcCheckTaskIncome.getIncomeTimeStart())) { qcCheckTaskIncome.setIncomeTimeStart(DateUtils.getDate() + " 00:00:00");//start LocalDate date = LocalDate.now(); LocalDate dateEnd = date.plusDays(1); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String dateEndStr = dtf.format(dateEnd) + " 00:00:00"; qcCheckTaskIncome.setIncomeTimeEnd(dateEndStr);//end - } + }*/ // if(StringUtils.isEmpty(qcCheckTaskIncome.getCheckTimeStart())){ // qcCheckTaskIncome.setCheckTimeStart(qcCheckTaskIncome.getIncomeTimeStart());//start diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskInventoryController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskInventoryController.java index 23a336003..3fd27733e 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskInventoryController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskInventoryController.java @@ -46,14 +46,14 @@ public class QcCheckTaskInventoryController extends BaseController { public TableDataInfo list(QcCheckTaskInventory qcCheckTaskInventory) { //默认时间范围T 00:00:00~T+1 00:00:00 - if (StringUtils.isEmpty(qcCheckTaskInventory.getIncomeTimeStart())) { + /*if (StringUtils.isEmpty(qcCheckTaskInventory.getIncomeTimeStart())) { qcCheckTaskInventory.setIncomeTimeStart(DateUtils.getDate() + " 00:00:00");//start LocalDate date = LocalDate.now(); LocalDate dateEnd = date.plusDays(1); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String dateEndStr = dtf.format(dateEnd) + " 00:00:00"; qcCheckTaskInventory.setIncomeTimeEnd(dateEndStr);//end - } + }*/ startPage(); List list = qcCheckTaskInventoryService.selectQcCheckTaskInventoryList(qcCheckTaskInventory); return getDataTable(list); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskMarketController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskMarketController.java index 0d8c37f7b..0aab53da5 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskMarketController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskMarketController.java @@ -39,14 +39,14 @@ public class QcCheckTaskMarketController extends BaseController { public TableDataInfo list(QcCheckTaskMarket qcCheckTaskMarket) { //默认时间范围T 00:00:00~T+1 00:00:00 - if (StringUtils.isEmpty(qcCheckTaskMarket.getIncomeTimeStart())) { + /*if (StringUtils.isEmpty(qcCheckTaskMarket.getIncomeTimeStart())) { qcCheckTaskMarket.setIncomeTimeStart(DateUtils.getDate() + " 00:00:00");//start LocalDate date = LocalDate.now(); LocalDate dateEnd = date.plusDays(1); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String dateEndStr = dtf.format(dateEnd) + " 00:00:00"; qcCheckTaskMarket.setIncomeTimeEnd(dateEndStr);//end - } + }*/ startPage(); List list = qcCheckTaskMarketService.selectQcCheckTaskMarketList(qcCheckTaskMarket); return getDataTable(list); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskWarehousingController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskWarehousingController.java index 45e41efd2..f2bcff53b 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskWarehousingController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskWarehousingController.java @@ -54,14 +54,14 @@ public class QcCheckTaskWarehousingController extends BaseController { public TableDataInfo list(QcCheckTaskWarehousing qcCheckTaskWarehousing) { startPage(); //默认时间范围T 00:00:00~T+1 00:00:00 - if(StringUtils.isEmpty(qcCheckTaskWarehousing.getIncomeTimeStart())){ + /*if(StringUtils.isEmpty(qcCheckTaskWarehousing.getIncomeTimeStart())){ qcCheckTaskWarehousing.setIncomeTimeStart(DateUtils.getDate()+" 00:00:00");//start LocalDate date = LocalDate.now(); LocalDate dateEnd = date.plusDays(1); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String dateEndStr = dtf.format(dateEnd)+" 00:00:00"; qcCheckTaskWarehousing.setIncomeTimeEnd(dateEndStr);//end - } + }*/ List list = qcCheckTaskWarehousingService.selectQcCheckTaskWarehousingList(qcCheckTaskWarehousing); return getDataTable(list); } @@ -74,14 +74,14 @@ public class QcCheckTaskWarehousingController extends BaseController { @PostMapping("/export") public void export(HttpServletResponse response, QcCheckTaskWarehousing qcCheckTaskWarehousing) { //默认时间范围T 00:00:00~T+1 00:00:00 - if(StringUtils.isEmpty(qcCheckTaskWarehousing.getIncomeTimeStart())){ + /*if(StringUtils.isEmpty(qcCheckTaskWarehousing.getIncomeTimeStart())){ qcCheckTaskWarehousing.setIncomeTimeStart(DateUtils.getDate()+" 00:00:00");//start LocalDate date = LocalDate.now(); LocalDate dateEnd = date.plusDays(1); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String dateEndStr = dtf.format(dateEnd)+" 00:00:00"; qcCheckTaskWarehousing.setIncomeTimeEnd(dateEndStr);//end - } + }*/ List list = qcCheckTaskWarehousingService.selectQcCheckTaskWarehousingList(qcCheckTaskWarehousing); ExcelUtil util = new ExcelUtil(QcCheckTaskWarehousing.class); util.exportExcel(response, list, "成品入库检验任务数据"); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QuaController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QuaController.java index 7e033ffd9..27291ef2f 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QuaController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QuaController.java @@ -195,6 +195,9 @@ public class QuaController extends BaseController { if(StringUtils.isBlank(qcCheckTaskIncome.getUpdateByName())){ return error("[updateByName]不能为空"); } +// if(StringUtils.isBlank(qcCheckTaskIncome.getCheckResult())){ +// return error("[checkResult]不能为空"); +// } return toAjax(qcCheckTaskIncomeService.commitCheckResults(qcCheckTaskIncome)); } /** diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskIncome.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskIncome.java index 5d1e0c9ce..99397fa80 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskIncome.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskIncome.java @@ -29,6 +29,7 @@ public class QcCheckTaskIncome extends BaseEntity { */ @Excel(name = "检验任务编号") private String checkNo; + private String orderCode; private String workorderCode; private String workorderCodeSap; @@ -196,6 +197,23 @@ public class QcCheckTaskIncome extends BaseEntity { private String materialType;//来料类别 private String materialFrom;//物料来源 + private String startOA;//发起oa 1是 0否 + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getStartOA() { + return startOA; + } + + public void setStartOA(String startOA) { + this.startOA = startOA; + } public String getOrderTypeDesc() { return orderTypeDesc; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTypeProject.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTypeProject.java index 02865dab2..508ff2982 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTypeProject.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTypeProject.java @@ -110,6 +110,15 @@ public class QcCheckTypeProject extends BaseEntity { private String checkTool; private String checkMode; private String unit; + private String weight; + + public String getWeight() { + return weight; + } + + public void setWeight(String weight) { + this.weight = weight; + } public String getUnit() { return unit; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckUnqualified.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckUnqualified.java index cbeb3e6e8..793327060 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckUnqualified.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckUnqualified.java @@ -117,6 +117,69 @@ public class QcCheckUnqualified extends BaseEntity { private Date startTime; private String startOaStatus; private String startOaMsg; + private String materialType;//来料类别 + private String materialFrom;//物料来源 + private String oaFactory;//oa厂区 + private String czbjr;//仓储报检人 + private String qczg;//QC主管 + private String user; + private String sqr; + + public String getSqr() { + return sqr; + } + + public void setSqr(String sqr) { + this.sqr = sqr; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getQczg() { + return qczg; + } + + public void setQczg(String qczg) { + this.qczg = qczg; + } + + public String getCzbjr() { + return czbjr; + } + + public void setCzbjr(String czbjr) { + this.czbjr = czbjr; + } + + public String getOaFactory() { + return oaFactory; + } + + public void setOaFactory(String oaFactory) { + this.oaFactory = oaFactory; + } + + public String getMaterialType() { + return materialType; + } + + public void setMaterialType(String materialType) { + this.materialType = materialType; + } + + public String getMaterialFrom() { + return materialFrom; + } + + public void setMaterialFrom(String materialFrom) { + this.materialFrom = materialFrom; + } public String getStartOaMsg() { return startOaMsg; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcDefectType.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcDefectType.java index 1ac75b82a..5c29f66f5 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcDefectType.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcDefectType.java @@ -5,6 +5,7 @@ import com.op.common.core.web.domain.BaseEntity; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -75,6 +76,8 @@ public class QcDefectType extends BaseEntity { private String createTimeEnd; private String checkType; + private BigDecimal ratio; + public String getCheckType() { return checkType; } @@ -202,6 +205,14 @@ public class QcDefectType extends BaseEntity { return delFlag; } + public BigDecimal getRatio() { + return ratio; + } + + public void setRatio(BigDecimal ratio) { + this.ratio = ratio; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java index 71efeaa01..1a7478e8b 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java @@ -16,17 +16,13 @@ import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; import com.op.quality.domain.*; import com.op.quality.mapper.*; -import com.op.quality.service.IQcCheckTaskDefectService; -import com.op.quality.service.IQcCheckTaskProduceService; -import com.op.quality.service.IQcCheckTaskUserService; -import com.op.system.api.RemoteOpenService; +import com.op.quality.service.*; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.quality.QcUserMaterialDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.op.quality.service.IQcCheckTaskIncomeService; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.context.request.RequestContextHolder; @@ -70,8 +66,8 @@ public class QcCheckTaskIncomeServiceImpl implements @Autowired private IQcCheckTaskUserService qcCheckTaskUserService; - @Autowired - private RemoteOpenService remoteOpenService; +// @Autowired +// private RemoteOpenService remoteOpenService; @Autowired private QMSFileMapper qmsFileMapper; @@ -85,8 +81,8 @@ public class QcCheckTaskIncomeServiceImpl implements @Autowired private QcCheckTaskDefectMapper qcCheckTaskDefectMapper; -// @Autowired -// private QcCheckUnqualifiedService qcCheckUnqualifiedService; + @Autowired + private IQcCheckUnqualifiedService qcCheckUnqualifiedService; /** * 查询来料检验 @@ -447,11 +443,11 @@ public class QcCheckTaskIncomeServiceImpl implements qcCheckTaskProduce.setCheckTime(DateUtils.getNowDate()); qcCheckTaskProduce.setCheckManCode(SecurityUtils.getUsername()); n = qcCheckTaskProduceMapper.updateQcCheckTaskProduce(qcCheckTaskProduce); - - - /**pro_order_workorder_batch-->qc_status->2**/ - qcCheckTaskIncome.setStatus("2"); - qcCheckUnqualifiedMapper.updateWorkOrderBatchStatus(qcCheckTaskIncome); + /**pro_order_workorder_batch-->首检qc_status->2**/ + if("checkTypeSC".equals(qcCheckTaskIncome.getCheckType())){ + qcCheckTaskIncome.setStatus("2"); + qcCheckUnqualifiedMapper.updateWorkOrderBatchStatus(qcCheckTaskIncome); + } }else if("product".equals(qcCheckTaskIncome.getTypeCode())){ QcCheckTaskWarehousing warehousing = new QcCheckTaskWarehousing(); warehousing.setCheckStatus("2"); @@ -598,14 +594,22 @@ public class QcCheckTaskIncomeServiceImpl implements String checkType = qcCheckTaskIncome.getCheckType(); qcCheckTaskIncome.setFactoryCode(qcCheckTaskIncome.getFactoryCode().replace("ds_","")); //默认合格 - String result = "Y"; - for(QcCheckTaskDetail detail:details){ - if("N".equals(detail.getStatus())){ - result = "N";//不合格 - break; + + String result=null; + if(StringUtils.isBlank(qcCheckTaskIncome.getCheckResult())){ + result = "Y"; + for(QcCheckTaskDetail detail:details){ + if("N".equals(detail.getStatus())){ + result = "N";//不合格 + break; + } } + }else{ + //有最终判定的情况 + result = qcCheckTaskIncome.getCheckResult(); } + int n = 0; QcCheckTaskIncome qcCheckTask = new QcCheckTaskIncome(); qcCheckTask.setUpdateBy(updateBy); @@ -613,6 +617,7 @@ public class QcCheckTaskIncomeServiceImpl implements qcCheckTask.setCheckStatus("2");//检测状态0待检测1检测中2检测完成 qcCheckTask.setUpdateTime(nowTime); qcCheckTask.setCheckTime(nowTime); + qcCheckTask.setRemark(qcCheckTaskIncome.getRemark()); qcCheckTask.setCheckResult(result);//检验结果Y合格 N不合格 qcCheckTask.setIncomeBatchNo(qcCheckTaskIncome.getIncomeBatchNo()); BigDecimal noOkQquality = new BigDecimal("0"); @@ -690,6 +695,7 @@ public class QcCheckTaskIncomeServiceImpl implements if("checkTypeSC".equals(qcCheckTaskIncome.getCheckType())){ /**pro_order_workorder_batch-->qc_status->2**/ qcCheckTaskIncome.setStatus("2"); + qcCheckTaskIncome.setCheckResult(result); qcCheckUnqualifiedMapper.updateWorkOrderBatchStatus(qcCheckTaskIncome); } if("checkTypeSC".equals(qcCheckTaskIncome.getCheckType())&&"N".equals(result)){ @@ -732,8 +738,48 @@ public class QcCheckTaskIncomeServiceImpl implements unqualified.setType(checkType); n = qcCheckUnqualifiedMapper.insertQcCheckUnqualified(unqualified); logger.info("qc_check_unqualified:" + n); + if("1".equals(qcCheckTaskIncome.getStartOA())){ - //qcCheckUnqualifiedService.updateQcCheckUnqualified(qcCheckUnqualified); + unqualified.setTypeCode(qcCheckTaskIncome.getTypeCode()); + //不合格描述 + unqualified.setRemark(qcCheckTaskIncome.getRemark()); + //厂区(小榄固定值) + unqualified.setOaFactory("0"); + //来料类别 + unqualified.setMaterialType(qcCheckTaskIncome.getMaterialType()); + //物料来源 + unqualified.setMaterialFrom(qcCheckTaskIncome.getMaterialFrom()); + //物料编号 + unqualified.setMaterialCode(qcCheckTaskIncome.getMaterialCode()); + //物料名称 + unqualified.setMaterialName(qcCheckTaskIncome.getMaterialName()); + //供应商编码 + unqualified.setSupplierCode(qcCheckTaskIncome.getSupplierCode()); + //供应商名称 + unqualified.setSupplierName(qcCheckTaskIncome.getSupplierName()); + //供应商名称 + unqualified.setSupplierName(qcCheckTaskIncome.getSupplierName()); + //生产批号 + unqualified.setIncomeBatchNo(qcCheckTaskIncome.getIncomeBatchNo()); + //来料数量 + unqualified.setQuality(qcCheckTaskIncome.getQuality().toString()); + //来料单位 + unqualified.setUnit(qcCheckTaskIncome.getUnit()); + //检验编号 + unqualified.setCheckNo(qcCheckTaskIncome.getCheckNo()); + //仓储报检人-李爱娟 + unqualified.setCzbjr("284"); + //物料类别 + unqualified.setMaterialType(qcCheckTaskIncome.getMaterialType()); + //物料来源 + unqualified.setMaterialFrom(qcCheckTaskIncome.getMaterialFrom()); + //QC主管-朱继新 + unqualified.setQczg("660"); + //申请人-朱继新 + unqualified.setSqr("660"); + unqualified.setUser("660"); + qcCheckUnqualifiedService.updateQcCheckUnqualified(unqualified); + } } return 1 ; } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskWarehousingServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskWarehousingServiceImpl.java index 0d5d4cbbd..d239d3c1e 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskWarehousingServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskWarehousingServiceImpl.java @@ -106,7 +106,7 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin * @return 结果 */ @Override - @Transactional(rollbackFor = Exception.class) + //@Transactional(rollbackFor = Exception.class)不能加 public int insertQcCheckTaskWarehousing(QcCheckTaskWarehousing qcCheckTaskWarehousing) { if(StringUtils.isNotBlank(qcCheckTaskWarehousing.getFactoryCode())){ @@ -138,10 +138,12 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin /**qc_material_group_detail**/ QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskWarehousing.getMaterialCode()); if(group == null){ - return 0;//没有找到检测项目 + group = new QcMaterialGroupDetail(); + group.setGroupId("3dc0655fea3449c59c76a01cc5b91565");//成品蚊香物料组 } qctp.setGroupId(group.getGroupId());//共性 - items = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp); + List itemsGG = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp); + items.addAll(itemsGG); } /**qc_check_task_detail**/ diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckUnqualifiedServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckUnqualifiedServiceImpl.java index 74b61d47b..dc05d8f76 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckUnqualifiedServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckUnqualifiedServiceImpl.java @@ -91,8 +91,9 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService //发起来料检验OA流程 AjaxResult oaR = new AjaxResult(); - QcCheckUnqualified taskIfo = qcCheckUnqualifiedMapper.selectQcCheckUnqualifiedById(qcCheckUnqualified.getId()); - taskIfo.setRemark(qcCheckUnqualified.getRemark()); + QcCheckUnqualified taskIfo = qcCheckUnqualified; +// QcCheckUnqualified taskIfo = qcCheckUnqualifiedMapper.selectQcCheckUnqualifiedById(qcCheckUnqualified.getId()); +// taskIfo.setRemark(qcCheckUnqualified.getRemark()); if("material".equals(taskIfo.getTypeCode())) { //ZL0010-来料检验不合格控制流程 oaR = this.createLLOA(taskIfo); @@ -163,32 +164,45 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService } /*来料检验不良OA流程 - * CQ 厂区、 OEMCM 厂名 、 LLLB 来料类别【0、1】、MATNR 物料编号、MAKTX 物料名称、suppliernum 供应商编码 - * supplier 供应商名称、CHARG 生产批号、comeQty 来料数量、testDate 检验日期 、 JYBH 检验编号、 + * SQR申请人 CQ 厂区、 OEMCM 厂名 、 LLLB 来料类别【0、1】、MATNR 物料编号、MAKTX 物料名称、suppliernum 供应商编码 + * supplier 供应商名称、CHARG 生产批号、comeQty 来料数量、DW 单位、testDate 检验日期 、 JYBH 检验编号、 * BJY 仓储报检人(OEM产品提报人)、WLLY 物料来源、ZCF 转出方、 ZCOEMCM 转出OEM厂名、 * memo 不合格情况描述 、PZGLBZG QC主管 + * 例子:{"requestName":"ZL0010-来料检验不合格控制流程", + * "mainObject":"{\"SQR\":\"13127\",\"CQ\":0,\"LLLB\":0,\"MATNR\":\"000000040000015062\", + * \"MAKTX\":\"榄菊加大盘强力型蚊香(60装)现货纸箱(2201)\",\"suppliernum\":\"0000102951\", + * \"supplier\":\"广东高顺印刷包装有限公司\",\"CHARG\":\"null\",\"comeQty\":\"1117\", + * \"DW\":\"ST\",\"JYBH\":\"202404180042\",\"BJY\":\"202404180042\",\"WLLY\":\"2\", + * \"memo\":\"不合格\",\"PZGLBZG\":\"不合格\"}","user":"999999","requestLevel":0,"workflowId":26235} + */ private AjaxResult createLLOA(QcCheckUnqualified task){ - QcCheckTaskIncome detailInfo = qcCheckTaskIncomeMapper.getTaskInfo(task.getTaskId()); + //QcCheckTaskIncome detailInfo = qcCheckTaskIncomeMapper.getTaskInfo(task.getTaskId()); //发起来料检验OA流程 Map paramMap = new HashMap<>(); - paramMap.put("user",SecurityUtils.getUsername());//提交人工号 + paramMap.put("user",task.getUser());//提交人工号 paramMap.put("requestLevel",0);//流程紧急度 paramMap.put("requestName","ZL0010-来料检验不合格控制流程");//流程名称 paramMap.put("workflowId",26235);//该流程对应的唯- workFlowld StringBuffer mainObject = new StringBuffer(); mainObject.append("{"); - mainObject.append("\"CQ\":"+detailInfo.getFactoryCode());//厂区 - mainObject.append(",\"LLLB\":"+0);//来料类别【0、1】 - mainObject.append(",\"MATNR\":"+"\""+detailInfo.getMaterialCode()+"\"");//物料编码 - mainObject.append(",\"MAKTX\":"+"\""+detailInfo.getMaterialName()+"\"");//物料名称 - mainObject.append(",\"suppliernum\":"+"\""+detailInfo.getSupplierCode()+"\"");//供应商编码 - mainObject.append(",\"supplier\":"+"\""+detailInfo.getSupplierName()+"\"");//供应商名称 - mainObject.append(",\"CHARG\":"+"\""+detailInfo.getIncomeBatchNo()+"\"");//生产批号 - mainObject.append(",\"comeQty\":"+"\""+detailInfo.getQuality()+"\"");//来料数量 - mainObject.append(",\"memo\":"+"\""+task.getRemark()+"\"");//不合格情况描述 + mainObject.append("\"SQR\":"+"\""+task.getSqr()+"\"");//申请人 + mainObject.append(",\"CQ\":"+task.getOaFactory());//厂区 + mainObject.append(",\"LLLB\":"+task.getMaterialType());//来料类别【0、1】 + mainObject.append(",\"MATNR\":"+"\""+task.getMaterialCode()+"\"");//物料编码 + mainObject.append(",\"MAKTX\":"+"\""+task.getMaterialName()+"\"");//物料名称 + mainObject.append(",\"suppliernum\":"+"\""+task.getSupplierCode()+"\"");//供应商编码 + mainObject.append(",\"supplier\":"+"\""+task.getSupplierName()+"\"");//供应商名称 + mainObject.append(",\"CHARG\":"+"\""+task.getIncomeBatchNo()+"\"");//生产批号 + mainObject.append(",\"comeQty\":"+"\""+task.getQuality()+"\"");//来料数量 + mainObject.append(",\"DW\":"+"\""+task.getUnit()+"\"");//来料单位 + mainObject.append(",\"JYBH\":"+"\""+task.getCheckNo()+"\"");//检验编码 + mainObject.append(",\"BJY\":"+"\""+task.getCzbjr()+"\"");//仓储报检人 + mainObject.append(",\"WLLY\":"+"\""+task.getMaterialFrom()+"\"");//物料来源 + mainObject.append(",\"memo\":"+"\""+task.getRemark()+"\"");//不合格描述 + mainObject.append(",\"PZGLBZG\":"+"\""+task.getQczg()+"\"");//qc主管 mainObject.append("}"); paramMap.put("mainObject",mainObject.toString()); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcProCheckServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcProCheckServiceImpl.java index 05898b168..0929a730c 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcProCheckServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcProCheckServiceImpl.java @@ -138,7 +138,7 @@ public class QcProCheckServiceImpl implements QcProCheckService { @Override public QcCheckTaskIncome getCheckTaskDetailList(QcCheckTaskDetail qcCheckTaskDetail) { DynamicDataSourceContextHolder.push(qcCheckTaskDetail.getFactoryCode()); - QcCheckTaskIncome dto = new QcCheckTaskIncome(); + QcCheckTaskIncome dto = qcCheckTaskIncomeMapper.getTaskInfo(qcCheckTaskDetail.getBelongTo()); List qcCheckTaskDetails = qcCheckTaskIncomeMapper.getCkeckProjectList(qcCheckTaskDetail); /**qc_check_task_defect**/ Map defectMap = qcCheckTaskDefectMapper.getDefectMap(qcCheckTaskDetail); diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml index f639d3f07..ce152437a 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml @@ -304,6 +304,7 @@ bNoOkquality = #{bNoOkquality}, cNoOkquality = #{cNoOkquality}, income_batch_no = #{incomeBatchNo}, + remark = #{remark}, check_result = #{checkResult}, update_by = #{updateBy}, update_time = #{updateTime} @@ -398,7 +399,8 @@ qct.check_time checkTime, qct.check_result checkResult, qct.income_time incomeTime, - qct.check_loc checkLoc + qct.check_loc checkLoc, + qct.remark from qc_check_task qct left join pro_order_workorder pow on pow.workorder_code = qct.order_no where qct.record_id = #{recordId} diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskProduceMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskProduceMapper.xml index 4d815eac0..bd864332f 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskProduceMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskProduceMapper.xml @@ -434,8 +434,8 @@ left join base_equipment be on be.equipment_code = pow.workorder_name and be.equipment_type_code = 'equ_type_bzx' where pow.del_flag = '0' and pow.status = 'w2' and pow.parent_order = '0' - and (pow.product_date = CONVERT(varchar(10),GETDATE(), 120) - or pow.product_date = CONVERT(varchar(10),DATEADD(DAY, -1, GETDATE()), 120)) + insert into qc_check_type diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml index e4ca8ee7a..f5d2e70e8 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml @@ -28,6 +28,7 @@ + @@ -40,28 +41,11 @@ SELECT - ctp.id, - ctp.project_id, - cp.rule_name, - cp.property_code, - ctp.type_id, - ctp.standard_value, - ctp.upper_diff, - ctp.down_diff, - ctp.sample, - ctp.status, - ctp.create_by, - ctp.create_time, - ctp.update_by, - ctp.update_time, - ctp.factory_code, - ctp.del_flag, - ctp.group_id, - ctp.material_code, - ctp.sample_num, - ctp.sort + ctp.id,ctp.project_id, + cp.rule_name,cp.property_code, + ctp.type_id,ctp.standard_value, + ctp.upper_diff,ctp.down_diff, + ctp.sample,ctp.status, + ctp.create_by,ctp.create_time, + ctp.update_by,ctp.update_time, + ctp.factory_code,ctp.del_flag, + ctp.group_id,ctp.material_code, + ctp.sample_num,ctp.sort,ctp.weight FROM qc_check_type_project ctp LEFT JOIN qc_check_project cp ON ctp.project_id = cp.id AND cp.del_flag = '0' WHERE ctp.del_flag ='0' AND ctp.id = #{id} @@ -279,6 +253,7 @@ unit = #{unit}, property_code = #{propertyCode}, sort = #{sort}, + weight = #{weight}, where id = #{id} diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml index e2309d5e8..1e99ea488 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml @@ -284,7 +284,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where order_no = #{orderNo} - update pro_order_workorder_batch set qc_status = #{status} where batch_code = #{incomeBatchNo} + update pro_order_workorder_batch + set qc_status = #{status} + + ,qc_result = #{checkResult} + + where batch_code = #{incomeBatchNo} and del_flag ='0' + and workorder_id in(select workorder_id from pro_order_workorder pow + where pow.belong_work_order = #{orderCode} and del_flag = '0') + update wms_product_put set check_status = #{status} where batch_number = #{incomeBatchNo} diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcDefectTypeMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcDefectTypeMapper.xml index a72ec0634..1cfd69dc7 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcDefectTypeMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcDefectTypeMapper.xml @@ -19,12 +19,13 @@ + select defect_id, defect_code, defect_type, defect_subclass, defect_remark, factory_code, attr1, attr2, attr3, - del_flag, create_by, create_time, update_by, update_time + del_flag, create_by, create_time, update_by, update_time,ratio from qc_defect_type @@ -83,6 +84,7 @@ create_time, update_by, update_time, + ratio, #{defectId}, @@ -99,6 +101,7 @@ #{createTime}, #{updateBy}, #{updateTime}, + #{ratio}, @@ -118,12 +121,13 @@ create_time = #{createTime}, update_by = #{updateBy}, update_time = #{updateTime}, + ratio = #{ratio}, where defect_id = #{defectId} and del_flag = '0' - delete qc_defect_type set del_flag = '1' where defect_id = #{defectId} + update qc_defect_type set del_flag = '1' where defect_id = #{defectId} diff --git a/op-modules/op-system/src/main/java/com/op/system/service/impl/SysDatasourceServiceImpl.java b/op-modules/op-system/src/main/java/com/op/system/service/impl/SysDatasourceServiceImpl.java index 455cbe893..704a92f06 100644 --- a/op-modules/op-system/src/main/java/com/op/system/service/impl/SysDatasourceServiceImpl.java +++ b/op-modules/op-system/src/main/java/com/op/system/service/impl/SysDatasourceServiceImpl.java @@ -103,7 +103,7 @@ public class SysDatasourceServiceImpl implements ISysDatasourceService { sysDatasource.setUrl(mysqlPrev + sysDatasource.getIpPort().split("/")[0] + mysqlAffter + sysDatasource.getIpPort().split("/")[1]); } - if (sysDatasource.getDeptId() != null) { + if (sysDatasource.getDeptId() != null && StringUtils.isEmpty(sysDatasource.getPoolName())) { sysDatasource.setPoolName(poolNamePrev + "_" + sysDatasource.getDeptId()); diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseDictDataController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseDictDataController.java new file mode 100644 index 000000000..446d6447b --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseDictDataController.java @@ -0,0 +1,116 @@ +package com.op.wms.controller; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.op.common.core.utils.StringUtils; +import com.op.common.core.utils.poi.ExcelUtil; +import com.op.common.core.web.controller.BaseController; +import com.op.common.core.web.domain.AjaxResult; +import com.op.common.core.web.page.TableDataInfo; +import com.op.common.log.annotation.Log; +import com.op.common.log.enums.BusinessType; +import com.op.common.security.annotation.RequiresPermissions; +import com.op.common.security.utils.SecurityUtils; + +import com.op.system.api.domain.SysDictData; +import com.op.wms.service.IBaseDictDataService; +import com.op.wms.service.IBaseDictTypeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据字典信息 + * + * @author OP + */ +@RestController +@RequestMapping("/dict/data") +public class BaseDictDataController extends BaseController { + @Autowired + private IBaseDictDataService dictDataService; + + @Autowired + private IBaseDictTypeService dictTypeService; + + @RequiresPermissions("factory:dict:list") + @GetMapping("/list") + @DS("#header.poolName") + public TableDataInfo list(SysDictData dictData) { + startPage(); + List list = dictDataService.selectDictDataList(dictData); + return getDataTable(list); + } + + @Log(title = "字典数据", businessType = BusinessType.EXPORT) + @RequiresPermissions("factory:dict:export") + @PostMapping("/export") + @DS("#header.poolName") + public void export(HttpServletResponse response, SysDictData dictData) { + List list = dictDataService.selectDictDataList(dictData); + ExcelUtil util = new ExcelUtil(SysDictData.class); + util.exportExcel(response, list, "字典数据"); + } + + /** + * 查询字典数据详细 + */ + @RequiresPermissions("factory:dict:query") + @GetMapping(value = "/{dictCode}") + @DS("#header.poolName") + public AjaxResult getInfo(@PathVariable Long dictCode) { + return success(dictDataService.selectDictDataById(dictCode)); + } + + /** + * 根据字典类型查询字典数据信息 + */ + @GetMapping(value = "/type/{dictType}") + @DS("#header.poolName") + public AjaxResult dictType(@PathVariable String dictType) { + List data = dictTypeService.selectDictDataByType(dictType); + if (StringUtils.isNull(data)) { + data = new ArrayList(); + } + return success(data); + } + + /** + * 新增字典类型 + */ + @RequiresPermissions("factory:dict:add") + @Log(title = "字典数据", businessType = BusinessType.INSERT) + @PostMapping + @DS("#header.poolName") + public AjaxResult add(@Validated @RequestBody SysDictData dict) { + dict.setCreateBy(SecurityUtils.getUsername()); + return toAjax(dictDataService.insertDictData(dict)); + } + + /** + * 修改保存字典类型 + */ + @RequiresPermissions("factory:dict:edit") + @Log(title = "字典数据", businessType = BusinessType.UPDATE) + @PutMapping + @DS("#header.poolName") + public AjaxResult edit(@Validated @RequestBody SysDictData dict) { + dict.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(dictDataService.updateDictData(dict)); + } + + /** + * 删除字典类型 + */ + @RequiresPermissions("factory:dict:remove") + @Log(title = "字典类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{dictCodes}") + @DS("#header.poolName") + public AjaxResult remove(@PathVariable Long[] dictCodes) { + dictDataService.deleteDictDataByIds(dictCodes); + return success(); + } +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseDictTypeController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseDictTypeController.java new file mode 100644 index 000000000..b59fd38a9 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseDictTypeController.java @@ -0,0 +1,125 @@ +package com.op.wms.controller; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.op.common.core.utils.poi.ExcelUtil; +import com.op.common.core.web.controller.BaseController; +import com.op.common.core.web.domain.AjaxResult; +import com.op.common.core.web.page.TableDataInfo; +import com.op.common.log.annotation.Log; +import com.op.common.log.enums.BusinessType; +import com.op.common.security.annotation.RequiresPermissions; +import com.op.common.security.utils.SecurityUtils; +import com.op.system.api.domain.SysDictType; + +import com.op.wms.service.IBaseDictTypeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 数据字典信息 + * + * @author OP + */ +@RestController +@RequestMapping("/dict/type") +public class BaseDictTypeController extends BaseController { + @Autowired + private IBaseDictTypeService dictTypeService; + + @RequiresPermissions("factory:dict:list") + @GetMapping("/list") + @DS("#header.poolName") + public TableDataInfo list(SysDictType dictType) { + startPage(); + List list = dictTypeService.selectDictTypeList(dictType); + return getDataTable(list); + } + + @Log(title = "字典类型", businessType = BusinessType.EXPORT) + @RequiresPermissions("factory:dict:export") + @PostMapping("/export") + @DS("#header.poolName") + public void export(HttpServletResponse response, SysDictType dictType) { + List list = dictTypeService.selectDictTypeList(dictType); + ExcelUtil util = new ExcelUtil(SysDictType.class); + util.exportExcel(response, list, "字典类型"); + } + + /** + * 查询字典类型详细 + */ + @RequiresPermissions("factory:dict:query") + @GetMapping(value = "/{dictId}") + @DS("#header.poolName") + public AjaxResult getInfo(@PathVariable Long dictId) { + return success(dictTypeService.selectDictTypeById(dictId)); + } + + /** + * 新增字典类型 + */ + @RequiresPermissions("factory:dict:add") + @Log(title = "字典类型", businessType = BusinessType.INSERT) + @PostMapping + @DS("#header.poolName") + public AjaxResult add(@Validated @RequestBody SysDictType dict) { + if (!dictTypeService.checkDictTypeUnique(dict)) { + return error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在"); + } + dict.setCreateBy(SecurityUtils.getUsername()); + return toAjax(dictTypeService.insertDictType(dict)); + } + + /** + * 修改字典类型 + */ + @RequiresPermissions("factory:dict:edit") + @Log(title = "字典类型", businessType = BusinessType.UPDATE) + @PutMapping + @DS("#header.poolName") + public AjaxResult edit(@Validated @RequestBody SysDictType dict) { + if (!dictTypeService.checkDictTypeUnique(dict)) { + return error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在"); + } + dict.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(dictTypeService.updateDictType(dict)); + } + + /** + * 删除字典类型 + */ + @RequiresPermissions("factory:dict:remove") + @Log(title = "字典类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{dictIds}") + @DS("#header.poolName") + public AjaxResult remove(@PathVariable Long[] dictIds) { + dictTypeService.deleteDictTypeByIds(dictIds); + return success(); + } + + /** + * 刷新字典缓存 + */ + @RequiresPermissions("factory:dict:remove") + @Log(title = "字典类型", businessType = BusinessType.CLEAN) + @DeleteMapping("/refreshCache") + @DS("#header.poolName") + public AjaxResult refreshCache() { + dictTypeService.resetDictCache(); + return success(); + } + + /** + * 获取字典选择框列表 + */ + @GetMapping("/optionselect") + @DS("#header.poolName") + public AjaxResult optionselect() { + List dictTypes = dictTypeService.selectDictTypeAll(); + return success(dictTypes); + } +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProductEmbryoInventoryController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProductEmbryoInventoryController.java index a885bccf7..c87ad567d 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProductEmbryoInventoryController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProductEmbryoInventoryController.java @@ -4,6 +4,7 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.op.wms.domain.OdsProductEmbryoInventory; +import com.op.wms.domain.OdsProductEmbryoInventoryCorrelation; import com.op.wms.service.IOdsProductEmbryoInventoryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -76,6 +77,16 @@ public class OdsProductEmbryoInventoryController extends BaseController { return toAjax(odsProductEmbryoInventoryService.insertOdsProductEmbryoInventory(odsProductEmbryoInventory)); } + + /** + * 新增成品盘点单 + */ + + @PostMapping("/addOdsProductEmbryoInventory") + public AjaxResult addOdsProductEmbryoInventory(@RequestBody OdsProductEmbryoInventory odsProductEmbryoInventory) { + return success(odsProductEmbryoInventoryService.addOdsProductEmbryoInventory(odsProductEmbryoInventory)); + } + /** * 修改成品盘点单 */ diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java index 062794f36..4a9ccdbc9 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java @@ -32,6 +32,8 @@ public class WmsToWCSmissionController { private IBaseWarehouseService baseWarehouseService; @Autowired private IOdsWhiteEmbryoService iOdsWhiteEmbryoService; + @Autowired + private IOdsProductEmbryoInventoryService odsProductEmbryoInventoryService; /** * 包材请求入库--- * @@ -453,4 +455,88 @@ public class WmsToWCSmissionController { String result= iOdsWhiteEmbryoService.WhiteBilletReturnConfir(wmsOdsEmStorageNewsSn); return success(result); } + + + + /** + * 查询成品盘点单 + */ + /** + * 盘点后,如果盘点总数量=盘点单总数量,则状态更新为已完成,如果不等于,则状态更新为待调整; + * @param odsProductEmbryoInventory + * @return + */ + @PostMapping("/selectOdsProductEmbryoInventory") + public AjaxResult selectOdsProductEmbryoInventory(@RequestBody OdsProductEmbryoInventory odsProductEmbryoInventory) { + return success(odsProductEmbryoInventoryService.selectOdsProductEmbryoInventory(odsProductEmbryoInventory)); + } + /** + * 成品盘点的托盘扫码 + */ + /** + * + * @param odsProductEmbryoInventory + * @return + */ + @PostMapping("/selectScanningTray") + public AjaxResult selectScanningTray(@RequestBody OdsProductEmbryoInventory odsProductEmbryoInventory) { + OdsProductEmbryoInventoryCorrelation odsProductEmbryoInventoryCorrelation= odsProductEmbryoInventoryService.selectScanningTray(odsProductEmbryoInventory); + if (odsProductEmbryoInventoryCorrelation==null){ + return success("托盘扫码错误"); + } + return success(odsProductEmbryoInventoryCorrelation); + } + /** + * 成品盘点-关联信息确认盘点 + */ + /** + * + * @param odsProductEmbryoInventory + * @return + */ + @PostMapping("/confirmInventory") + public AjaxResult confirmInventory(@RequestBody OdsProductEmbryoInventory odsProductEmbryoInventory) { + String result= odsProductEmbryoInventoryService.confirmInventory(odsProductEmbryoInventory); + return success(result); + } + /** + * 成品盘点-关联信息确--取消盘点 + */ + /** + * + * @param odsProductEmbryoInventory + * @return + */ + @PostMapping("/cancelInventory") + public AjaxResult cancelInventory(@RequestBody OdsProductEmbryoInventory odsProductEmbryoInventory) { + String result= odsProductEmbryoInventoryService.cancelInventory(odsProductEmbryoInventory); + return success(result); + } + + /** + * 成品盘点---盘点完成确认按钮 + */ + /** + *盘点后,如果盘点总数量=盘点单总数量,则状态更新为已完成,如果不等于,则状态更新为待调整; + * @param odsProductEmbryoInventory + * @return + */ + @PostMapping("/confirmCompletion") + public AjaxResult confirmCompletion(@RequestBody OdsProductEmbryoInventory odsProductEmbryoInventory) { + String result= odsProductEmbryoInventoryService.confirmCompletion(odsProductEmbryoInventory); + return success(result); + } + // + + /** + * 获取已经盘点的盘点单的关联信息 + * @param odsProductEmbryoInventory + * @return + */ + @PostMapping("/selectOdsProductEmbryoInventoryCorrelation") + public AjaxResult selectOdsProductEmbryoInventoryCorrelation(@RequestBody OdsProductEmbryoInventory odsProductEmbryoInventory) { + List odsProductEmbryoInventoryCorrelationList= odsProductEmbryoInventoryService.selectOdsProductEmbryoInventoryCorrelation(odsProductEmbryoInventory); + return success(odsProductEmbryoInventoryCorrelationList); + } + } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProductEmbryoInventory.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProductEmbryoInventory.java index f4fee6a70..9aadf1389 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProductEmbryoInventory.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProductEmbryoInventory.java @@ -2,6 +2,8 @@ package com.op.wms.domain; import java.math.BigDecimal; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -17,6 +19,17 @@ import com.op.common.core.web.domain.BaseEntity; public class OdsProductEmbryoInventory extends BaseEntity { private static final long serialVersionUID=1L; + + private List odsProductEmbryoInventoryCorrelationList; + + public List getOdsProductEmbryoInventoryCorrelationList() { + return odsProductEmbryoInventoryCorrelationList; + } + + public void setOdsProductEmbryoInventoryCorrelationList(List odsProductEmbryoInventoryCorrelationList) { + this.odsProductEmbryoInventoryCorrelationList = odsProductEmbryoInventoryCorrelationList; + } + /** 工厂编码 */ @Excel(name = "工厂编码") private String siteCode; @@ -27,6 +40,16 @@ private static final long serialVersionUID=1L; /** 盘点单号 */ @Excel(name = "盘点单号") private String orderCode; + @Excel(name = "托盘") + private String sn; + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } /** 型号编码 */ @Excel(name = "型号编码") diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProductEmbryoInventoryCorrelation.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProductEmbryoInventoryCorrelation.java new file mode 100644 index 000000000..bf982fa52 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProductEmbryoInventoryCorrelation.java @@ -0,0 +1,428 @@ +package com.op.wms.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 成品盘点关联表 ods_product_embryo_inventory + * + * @author Open Platform + * @date 2024-04-10 + */ +public class OdsProductEmbryoInventoryCorrelation extends BaseEntity { +private static final long serialVersionUID=1L; + + /** 工厂编码 */ + @Excel(name = "工厂编码") + private String siteCode; + private String amount; + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + /** ID */ + private String ID; + + /** 盘点单号 */ + @Excel(name = "关联的盘点单号") + private String orderCode; + private String wlCode; + + public String getWlCode() { + return wlCode; + } + + public void setWlCode(String wlCode) { + this.wlCode = wlCode; + } + + /** 型号编码 */ + @Excel(name = "型号编码") + private String materialCode; + /** 型号编码 */ + @Excel(name = "备注") + private String Remark; + @Excel(name = "托盘") + private String sn; + + + private String productCode; + private String productName; + + public String getProductCode() { + return productCode; + } + + public void setProductCode(String productCode) { + this.productCode = productCode; + } + + public String getProductName() { + return productName; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + @Override + public String getRemark() { + return Remark; + } + + @Override + public void setRemark(String remark) { + Remark = remark; + } + + /** 型号名称 */ + @Excel(name = "型号名称") + private String materialDesc; + + /** 计划日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "计划日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date planDate; + + /** 库存数量 */ + @Excel(name = "应盘数量") + private BigDecimal locNumber; + + /** 单位 */ + @Excel(name = "单位") + private String unit; + + /** 实际数量 */ + @Excel(name = "实际数量") + private BigDecimal realityNumber; + + /** 订单状态 */ + @Excel(name = "状态0是未盘。1是盘了") + private String orderStatus; + + /** 用户自定义属性2 */ + @Excel(name = "用户自定义属性2") + private String userDefined1; + + /** 库位 */ + @Excel(name = "库位") + private String locCode; + + /** 用户自定义属性2 */ + @Excel(name = "用户自定义属性2") + private String userDefined2; + + /** 用户自定义属性3 */ + @Excel(name = "用户自定义属性3") + private String userDefined3; + + /** 用户自定义属性4 */ + @Excel(name = "用户自定义属性4") + private String userDefined4; + + /** 用户自定义属性5 */ + @Excel(name = "用户自定义属性5") + private String userDefined5; + + /** 用户自定义属性6 */ + @Excel(name = "用户自定义属性6") + private String userDefined6; + + /** 用户自定义属性7 */ + @Excel(name = "用户自定义属性7") + private String userDefined7; + + /** 用户自定义属性8 */ + @Excel(name = "用户自定义属性8") + private String userDefined8; + + /** 用户自定义属性9 */ + @Excel(name = "用户自定义属性9") + private String userDefined9; + + /** 用户自定义属性10 */ + @Excel(name = "用户自定义属性10") + private String userDefined10; + + /** 用户自定义属性11 */ + @Excel(name = "用户自定义属性11") + private String userDefined11; + + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date createDate; + + /** 最后更新人 */ + @Excel(name = "最后更新人") + private String lastUpdateBy; + + /** 最后更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "最后更新时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date lastUpdateDate; + + /** 可用标识 */ + @Excel(name = "可用标识") + private String Active; + + /** 企业主键 */ + @Excel(name = "企业主键") + private String enterpriseId; + + /** 企业编码 */ + @Excel(name = "企业编码") + private String enterpriseCode; + + public void setSiteCode(String siteCode){ + this.siteCode = siteCode; + } + + public String getSiteCode(){ + return siteCode; + } + public void setID(String ID){ + this.ID = ID; + } + + public String getID(){ + return ID; + } + public void setOrderCode(String orderCode){ + this.orderCode = orderCode; + } + + public String getOrderCode(){ + return orderCode; + } + public void setMaterialCode(String materialCode){ + this.materialCode = materialCode; + } + + public String getMaterialCode(){ + return materialCode; + } + public void setMaterialDesc(String materialDesc){ + this.materialDesc = materialDesc; + } + + public String getMaterialDesc(){ + return materialDesc; + } + public void setPlanDate(Date planDate){ + this.planDate = planDate; + } + + public Date getPlanDate(){ + return planDate; + } + public void setLocNumber(BigDecimal locNumber){ + this.locNumber = locNumber; + } + + public BigDecimal getLocNumber(){ + return locNumber; + } + public void setUnit(String unit){ + this.unit = unit; + } + + public String getUnit(){ + return unit; + } + public void setRealityNumber(BigDecimal realityNumber){ + this.realityNumber = realityNumber; + } + + public BigDecimal getRealityNumber(){ + return realityNumber; + } + public void setOrderStatus(String orderStatus){ + this.orderStatus = orderStatus; + } + + public String getOrderStatus(){ + return orderStatus; + } + public void setUserDefined1(String userDefined1){ + this.userDefined1 = userDefined1; + } + + public String getUserDefined1(){ + return userDefined1; + } + public void setLocCode(String locCode){ + this.locCode = locCode; + } + + public String getLocCode(){ + return locCode; + } + public void setUserDefined2(String userDefined2){ + this.userDefined2 = userDefined2; + } + + public String getUserDefined2(){ + return userDefined2; + } + public void setUserDefined3(String userDefined3){ + this.userDefined3 = userDefined3; + } + + public String getUserDefined3(){ + return userDefined3; + } + public void setUserDefined4(String userDefined4){ + this.userDefined4 = userDefined4; + } + + public String getUserDefined4(){ + return userDefined4; + } + public void setUserDefined5(String userDefined5){ + this.userDefined5 = userDefined5; + } + + public String getUserDefined5(){ + return userDefined5; + } + public void setUserDefined6(String userDefined6){ + this.userDefined6 = userDefined6; + } + + public String getUserDefined6(){ + return userDefined6; + } + public void setUserDefined7(String userDefined7){ + this.userDefined7 = userDefined7; + } + + public String getUserDefined7(){ + return userDefined7; + } + public void setUserDefined8(String userDefined8){ + this.userDefined8 = userDefined8; + } + + public String getUserDefined8(){ + return userDefined8; + } + public void setUserDefined9(String userDefined9){ + this.userDefined9 = userDefined9; + } + + public String getUserDefined9(){ + return userDefined9; + } + public void setUserDefined10(String userDefined10){ + this.userDefined10 = userDefined10; + } + + public String getUserDefined10(){ + return userDefined10; + } + public void setUserDefined11(String userDefined11){ + this.userDefined11 = userDefined11; + } + + public String getUserDefined11(){ + return userDefined11; + } + public void setCreateDate(Date createDate){ + this.createDate = createDate; + } + + public Date getCreateDate(){ + return createDate; + } + public void setLastUpdateBy(String lastUpdateBy){ + this.lastUpdateBy = lastUpdateBy; + } + + public String getLastUpdateBy(){ + return lastUpdateBy; + } + public void setLastUpdateDate(Date lastUpdateDate){ + this.lastUpdateDate = lastUpdateDate; + } + + public Date getLastUpdateDate(){ + return lastUpdateDate; + } + public void setActive(String Active){ + this.Active = Active; + } + + public String getActive(){ + return Active; + } + public void setEnterpriseId(String enterpriseId){ + this.enterpriseId = enterpriseId; + } + + public String getEnterpriseId(){ + return enterpriseId; + } + public void setEnterpriseCode(String enterpriseCode){ + this.enterpriseCode = enterpriseCode; + } + + public String getEnterpriseCode(){ + return enterpriseCode; + } + +@Override +public String toString(){ + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("siteCode",getSiteCode()) + .append("ID",getID()) + .append("orderCode",getOrderCode()) + .append("materialCode",getMaterialCode()) + .append("materialDesc",getMaterialDesc()) + .append("planDate",getPlanDate()) + .append("locNumber",getLocNumber()) + .append("unit",getUnit()) + .append("realityNumber",getRealityNumber()) + .append("orderStatus",getOrderStatus()) + .append("userDefined1",getUserDefined1()) + .append("locCode",getLocCode()) + .append("userDefined2",getUserDefined2()) + .append("userDefined3",getUserDefined3()) + .append("userDefined4",getUserDefined4()) + .append("userDefined5",getUserDefined5()) + .append("userDefined6",getUserDefined6()) + .append("userDefined7",getUserDefined7()) + .append("userDefined8",getUserDefined8()) + .append("userDefined9",getUserDefined9()) + .append("userDefined10",getUserDefined10()) + .append("userDefined11",getUserDefined11()) + .append("Remark",getRemark()) + .append("createBy",getCreateBy()) + .append("createDate",getCreateDate()) + .append("lastUpdateBy",getLastUpdateBy()) + .append("lastUpdateDate",getLastUpdateDate()) + .append("Active",getActive()) + .append("enterpriseId",getEnterpriseId()) + .append("enterpriseCode",getEnterpriseCode()) + .toString(); + } + } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/BaseDictDataMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/BaseDictDataMapper.java new file mode 100644 index 000000000..98874b803 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/BaseDictDataMapper.java @@ -0,0 +1,95 @@ +package com.op.wms.mapper; + +import com.op.system.api.domain.SysDictData; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 字典表 数据层 + * + * @author OP + */ +public interface BaseDictDataMapper { + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + public List selectDictDataList(SysDictData dictData); + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + public List selectDictDataByType(String dictType); + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue); + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + public SysDictData selectDictDataById(Long dictCode); + + /** + * 查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据 + */ + public int countDictDataByType(String dictType); + + /** + * 通过字典ID删除字典数据信息 + * + * @param dictCode 字典数据ID + * @return 结果 + */ + public int deleteDictDataById(Long dictCode); + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + * @return 结果 + */ + public int deleteDictDataByIds(Long[] dictCodes); + + /** + * 新增字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int insertDictData(SysDictData dictData); + + /** + * 修改字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int updateDictData(SysDictData dictData); + + /** + * 同步修改字典类型 + * + * @param oldDictType 旧字典类型 + * @param newDictType 新旧字典类型 + * @return 结果 + */ + public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType); +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/BaseDictTypeMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/BaseDictTypeMapper.java new file mode 100644 index 000000000..7441114d6 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/BaseDictTypeMapper.java @@ -0,0 +1,83 @@ +package com.op.wms.mapper; + +import com.op.system.api.domain.SysDictType; + +import java.util.List; + +/** + * 字典表 数据层 + * + * @author OP + */ +public interface BaseDictTypeMapper { + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + public List selectDictTypeList(SysDictType dictType); + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + public List selectDictTypeAll(); + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + public SysDictType selectDictTypeById(Long dictId); + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + public SysDictType selectDictTypeByType(String dictType); + + /** + * 通过字典ID删除字典信息 + * + * @param dictId 字典ID + * @return 结果 + */ + public int deleteDictTypeById(Long dictId); + + /** + * 批量删除字典类型信息 + * + * @param dictIds 需要删除的字典ID + * @return 结果 + */ + public int deleteDictTypeByIds(Long[] dictIds); + + /** + * 新增字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int insertDictType(SysDictType dictType); + + /** + * 修改字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int updateDictType(SysDictType dictType); + + /** + * 校验字典类型称是否唯一 + * + * @param dictType 字典类型 + * @return 结果 + */ + public SysDictType checkDictTypeUnique(String dictType); +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProductEmbryoInventoryMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProductEmbryoInventoryMapper.java index aedc33bea..20247eee0 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProductEmbryoInventoryMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProductEmbryoInventoryMapper.java @@ -3,6 +3,7 @@ package com.op.wms.mapper; import java.util.List; import com.op.wms.domain.OdsProductEmbryoInventory; +import com.op.wms.domain.OdsProductEmbryoInventoryCorrelation; /** * 成品盘点单Mapper接口 @@ -58,4 +59,10 @@ public interface OdsProductEmbryoInventoryMapper { * @return 结果 */ public int deleteOdsProductEmbryoInventoryByIDs(String[] IDs); + + void insertOdsProductEmbryoInventoryCorrelation(OdsProductEmbryoInventoryCorrelation odsProductEmbryoInventoryCorrelation1); + + List selectOdsProductEmbryoInventoryCorrelationList(OdsProductEmbryoInventory odsProductEmbryoInventory2); + + public int updateOdsProductEmbryoInventoryCorrelation(OdsProductEmbryoInventory odsProductEmbryoInventory1); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IBaseDictDataService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IBaseDictDataService.java new file mode 100644 index 000000000..983c1e00d --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IBaseDictDataService.java @@ -0,0 +1,61 @@ +package com.op.wms.service; + + +import com.op.system.api.domain.SysDictData; + +import java.util.List; + +/** + * 字典 业务层 + * + * @author OP + */ +public interface IBaseDictDataService { + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + public List selectDictDataList(SysDictData dictData); + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + public String selectDictLabel(String dictType, String dictValue); + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + public SysDictData selectDictDataById(Long dictCode); + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + */ + public void deleteDictDataByIds(Long[] dictCodes); + + /** + * 新增保存字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int insertDictData(SysDictData dictData); + + /** + * 修改保存字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int updateDictData(SysDictData dictData); +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IBaseDictTypeService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IBaseDictTypeService.java new file mode 100644 index 000000000..65f8c9d03 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IBaseDictTypeService.java @@ -0,0 +1,99 @@ +package com.op.wms.service; + + +import com.op.system.api.domain.SysDictData; +import com.op.system.api.domain.SysDictType; + +import java.util.List; + +/** + * 字典 业务层 + * + * @author OP + */ +public interface IBaseDictTypeService { + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + public List selectDictTypeList(SysDictType dictType); + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + public List selectDictTypeAll(); + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + public List selectDictDataByType(String dictType); + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + public SysDictType selectDictTypeById(Long dictId); + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + public SysDictType selectDictTypeByType(String dictType); + + /** + * 批量删除字典信息 + * + * @param dictIds 需要删除的字典ID + */ + public void deleteDictTypeByIds(Long[] dictIds); + + /** + * 加载字典缓存数据 + */ + public void loadingDictCache(); + + /** + * 清空字典缓存数据 + */ + public void clearDictCache(); + + /** + * 重置字典缓存数据 + */ + public void resetDictCache(); + + /** + * 新增保存字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int insertDictType(SysDictType dictType); + + /** + * 修改保存字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int updateDictType(SysDictType dictType); + + /** + * 校验字典类型称是否唯一 + * + * @param dictType 字典类型 + * @return 结果 + */ + public boolean checkDictTypeUnique(SysDictType dictType); +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProductEmbryoInventoryService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProductEmbryoInventoryService.java index c2b2dcefb..5d92b172d 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProductEmbryoInventoryService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProductEmbryoInventoryService.java @@ -3,6 +3,7 @@ package com.op.wms.service; import java.util.List; import com.op.wms.domain.OdsProductEmbryoInventory; +import com.op.wms.domain.OdsProductEmbryoInventoryCorrelation; /** * 成品盘点单Service接口 @@ -58,4 +59,18 @@ public interface IOdsProductEmbryoInventoryService { * @return 结果 */ public int deleteOdsProductEmbryoInventoryByID(String ID); + + String addOdsProductEmbryoInventory(OdsProductEmbryoInventory odsProductEmbryoInventory); + + OdsProductEmbryoInventory selectOdsProductEmbryoInventory(OdsProductEmbryoInventory odsProductEmbryoInventory); + + OdsProductEmbryoInventoryCorrelation selectScanningTray(OdsProductEmbryoInventory odsProductEmbryoInventory); + + String confirmInventory(OdsProductEmbryoInventory odsProductEmbryoInventory); + + String cancelInventory(OdsProductEmbryoInventory odsProductEmbryoInventory); + + String confirmCompletion(OdsProductEmbryoInventory odsProductEmbryoInventory); + + List selectOdsProductEmbryoInventoryCorrelation(OdsProductEmbryoInventory odsProductEmbryoInventory); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/BaseDictDataServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/BaseDictDataServiceImpl.java new file mode 100644 index 000000000..139988183 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/BaseDictDataServiceImpl.java @@ -0,0 +1,102 @@ +package com.op.wms.service.impl; + +import com.op.common.security.utils.DictUtils; +import com.op.system.api.domain.SysDictData; +import com.op.wms.mapper.BaseDictDataMapper; +import com.op.wms.service.IBaseDictDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 字典 业务层处理 + * + * @author OP + */ +@Service +public class BaseDictDataServiceImpl implements IBaseDictDataService { + @Autowired + private BaseDictDataMapper dictDataMapper; + + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + @Override + public List selectDictDataList(SysDictData dictData) { + return dictDataMapper.selectDictDataList(dictData); + } + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + @Override + public String selectDictLabel(String dictType, String dictValue) { + return dictDataMapper.selectDictLabel(dictType, dictValue); + } + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + @Override + public SysDictData selectDictDataById(Long dictCode) { + return dictDataMapper.selectDictDataById(dictCode); + } + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + */ + @Override + public void deleteDictDataByIds(Long[] dictCodes) { + for (Long dictCode : dictCodes) { + SysDictData data = selectDictDataById(dictCode); + dictDataMapper.deleteDictDataById(dictCode); + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + } + + /** + * 新增保存字典数据信息 + * + * @param data 字典数据信息 + * @return 结果 + */ + @Override + public int insertDictData(SysDictData data) { + int row = dictDataMapper.insertDictData(data); + if (row > 0) { + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + return row; + } + + /** + * 修改保存字典数据信息 + * + * @param data 字典数据信息 + * @return 结果 + */ + @Override + public int updateDictData(SysDictData data) { + int row = dictDataMapper.updateDictData(data); + if (row > 0) { + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + return row; + } +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/BaseDictTypeServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/BaseDictTypeServiceImpl.java new file mode 100644 index 000000000..e8bb51f1e --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/BaseDictTypeServiceImpl.java @@ -0,0 +1,205 @@ +package com.op.wms.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.op.common.core.constant.UserConstants; +import com.op.common.core.exception.ServiceException; +import com.op.common.core.utils.StringUtils; +import com.op.common.security.utils.DictUtils; +import com.op.system.api.domain.SysDictData; +import com.op.system.api.domain.SysDictType; +import com.op.wms.mapper.BaseDictDataMapper; +import com.op.wms.mapper.BaseDictTypeMapper; +import com.op.wms.service.IBaseDictTypeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 字典 业务层处理 + * + * @author OP + */ +@Service +public class BaseDictTypeServiceImpl implements IBaseDictTypeService { + @Autowired + private BaseDictTypeMapper dictTypeMapper; + + @Autowired + private BaseDictDataMapper dictDataMapper; + + /** + * 项目启动时,初始化字典到缓存 + */ + /*@PostConstruct + public void init() { + loadingDictCache(); + } +*/ + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + @Override + public List selectDictTypeList(SysDictType dictType) { + return dictTypeMapper.selectDictTypeList(dictType); + } + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + @Override + public List selectDictTypeAll() { + return dictTypeMapper.selectDictTypeAll(); + } + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + @Override + public List selectDictDataByType(String dictType) { + List dictDatas = DictUtils.getDictCache(dictType); + if (StringUtils.isNotEmpty(dictDatas)) { + return dictDatas; + } + dictDatas = dictDataMapper.selectDictDataByType(dictType); + if (StringUtils.isNotEmpty(dictDatas)) { + DictUtils.setDictCache(dictType, dictDatas); + return dictDatas; + } + return null; + } + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + @Override + public SysDictType selectDictTypeById(Long dictId) { + return dictTypeMapper.selectDictTypeById(dictId); + } + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + @Override + public SysDictType selectDictTypeByType(String dictType) { + return dictTypeMapper.selectDictTypeByType(dictType); + } + + /** + * 批量删除字典类型信息 + * + * @param dictIds 需要删除的字典ID + */ + @Override + public void deleteDictTypeByIds(Long[] dictIds) { + for (Long dictId : dictIds) { + SysDictType dictType = selectDictTypeById(dictId); + if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0) { + throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName())); + } + dictTypeMapper.deleteDictTypeById(dictId); + DictUtils.removeDictCache(dictType.getDictType()); + } + } + + /** + * 加载字典缓存数据 + */ + @Override + @DS("#header.poolName") + public void loadingDictCache() { + SysDictData dictData = new SysDictData(); + dictData.setStatus("0"); + Map> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream() + .collect(Collectors.groupingBy(SysDictData::getDictType)); + for (Map.Entry> entry : dictDataMap.entrySet()) { + DictUtils.setDictCache(entry.getKey(), entry.getValue().stream() + .sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList())); + } + } + + /** + * 清空字典缓存数据 + */ + @Override + public void clearDictCache() { + DictUtils.clearDictCache(); + } + + /** + * 重置字典缓存数据 + */ + @Override + public void resetDictCache() { + clearDictCache(); + loadingDictCache(); + } + + /** + * 新增保存字典类型信息 + * + * @param dict 字典类型信息 + * @return 结果 + */ + @Override + public int insertDictType(SysDictType dict) { + int row = dictTypeMapper.insertDictType(dict); + if (row > 0) { + DictUtils.setDictCache(dict.getDictType(), null); + } + return row; + } + + /** + * 修改保存字典类型信息 + * + * @param dict 字典类型信息 + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateDictType(SysDictType dict) { + SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId()); + dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType()); + int row = dictTypeMapper.updateDictType(dict); + if (row > 0) { + List dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType()); + DictUtils.setDictCache(dict.getDictType(), dictDatas); + } + return row; + } + + /** + * 校验字典类型称是否唯一 + * + * @param dict 字典类型 + * @return 结果 + */ + @Override + public boolean checkDictTypeUnique(SysDictType dict) { + Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId(); + SysDictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType()); + if (StringUtils.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProductEmbryoInventoryServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProductEmbryoInventoryServiceImpl.java index fd4877ddf..a54c1b939 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProductEmbryoInventoryServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProductEmbryoInventoryServiceImpl.java @@ -1,10 +1,20 @@ package com.op.wms.service.impl; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.security.utils.SecurityUtils; import com.op.wms.domain.OdsProductEmbryoInventory; +import com.op.wms.domain.OdsProductEmbryoInventoryCorrelation; +import com.op.wms.domain.Purcode; import com.op.wms.mapper.OdsProductEmbryoInventoryMapper; +import com.op.wms.mapper.PurcodeMapper; import com.op.wms.service.IOdsProductEmbryoInventoryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -21,6 +31,8 @@ public class OdsProductEmbryoInventoryServiceImpl implements IOdsProductEmbryoIn @Autowired private OdsProductEmbryoInventoryMapper odsProductEmbryoInventoryMapper; + @Autowired + private PurcodeMapper purcodeMapper; /** * 查询成品盘点单 * @@ -92,4 +104,203 @@ public class OdsProductEmbryoInventoryServiceImpl implements IOdsProductEmbryoIn public int deleteOdsProductEmbryoInventoryByID(String ID) { return odsProductEmbryoInventoryMapper.deleteOdsProductEmbryoInventoryByID(ID); } + + @Override + @DS("#header.poolName") + public String addOdsProductEmbryoInventory(OdsProductEmbryoInventory odsProductEmbryoInventory) { + String ruslt="创建成功"; + //插入盘点表 + String orderCode = getPurcode(null, "PD"); + OdsProductEmbryoInventory odsProductEmbryoInventory1=new OdsProductEmbryoInventory(); + odsProductEmbryoInventory1.setID(IdUtils.fastSimpleUUID()); + odsProductEmbryoInventory1.setActive("1"); + odsProductEmbryoInventory1.setSiteCode(odsProductEmbryoInventory.getSiteCode()); + odsProductEmbryoInventory1.setOrderCode(orderCode);//自动生成 + odsProductEmbryoInventory1.setOrderStatus("0"); + // odsProductEmbryoInventory1.setMaterialCode(odsProductEmbryoInventory.getMaterialCode()); + // odsProductEmbryoInventory1.setMaterialDesc(odsProductEmbryoInventory.getMaterialDesc()); + // odsProductEmbryoInventory1.setLocNumber(); + odsProductEmbryoInventory1.setUnit(odsProductEmbryoInventory.getUnit()); + odsProductEmbryoInventory1.setUserDefined1(odsProductEmbryoInventory.getUserDefined1());//盘点仓库 + odsProductEmbryoInventory1.setUserDefined3(odsProductEmbryoInventory.getUserDefined3());//盘点类型 + odsProductEmbryoInventory1.setUserDefined10(odsProductEmbryoInventory.getUserDefined10());//盘点策略 + odsProductEmbryoInventory1.setUserDefined11(odsProductEmbryoInventory.getUserDefined11());//产品状态 + odsProductEmbryoInventory1.setRemark(odsProductEmbryoInventory.getRemark()); + odsProductEmbryoInventory1.setCreateBy(SecurityUtils.getUsername()); + odsProductEmbryoInventory1.setCreateDate(new Date()); + odsProductEmbryoInventoryMapper.insertOdsProductEmbryoInventory(odsProductEmbryoInventory1); + //插入对应的关联明细 + List odsProductEmbryoInventoryCorrelationList= odsProductEmbryoInventory.getOdsProductEmbryoInventoryCorrelationList(); + for (OdsProductEmbryoInventoryCorrelation odsProductEmbryoInventoryCorrelation: + odsProductEmbryoInventoryCorrelationList ) { + OdsProductEmbryoInventoryCorrelation odsProductEmbryoInventoryCorrelation1=new OdsProductEmbryoInventoryCorrelation(); + odsProductEmbryoInventoryCorrelation1.setID(IdUtils.fastSimpleUUID()); + odsProductEmbryoInventoryCorrelation1.setActive("1"); + odsProductEmbryoInventoryCorrelation1.setSiteCode(odsProductEmbryoInventory.getSiteCode()); + odsProductEmbryoInventoryCorrelation1.setOrderCode(orderCode); + odsProductEmbryoInventoryCorrelation1.setOrderStatus("0"); + odsProductEmbryoInventoryCorrelation1.setMaterialCode(odsProductEmbryoInventoryCorrelation.getProductCode()); + odsProductEmbryoInventoryCorrelation1.setMaterialDesc(odsProductEmbryoInventoryCorrelation.getProductName()); + odsProductEmbryoInventoryCorrelation1.setLocNumber(new BigDecimal(odsProductEmbryoInventoryCorrelation.getAmount()));//应盘 + odsProductEmbryoInventoryCorrelation1.setLocCode(odsProductEmbryoInventoryCorrelation.getWlCode());//库位 + odsProductEmbryoInventoryCorrelation1.setUserDefined2(odsProductEmbryoInventoryCorrelation.getSn());//sn + odsProductEmbryoInventoryCorrelation1.setUnit(odsProductEmbryoInventoryCorrelation.getUnit()); + odsProductEmbryoInventoryCorrelation1.setUserDefined1(odsProductEmbryoInventory.getUserDefined1());//盘点仓库 + odsProductEmbryoInventoryCorrelation1.setUserDefined3(odsProductEmbryoInventory.getUserDefined3());//盘点类型 + odsProductEmbryoInventoryCorrelation1.setUserDefined10(odsProductEmbryoInventory.getUserDefined10());//盘点策略 + odsProductEmbryoInventoryCorrelation1.setUserDefined11(odsProductEmbryoInventory.getUserDefined11());//产品状态 + odsProductEmbryoInventoryCorrelation1.setRemark(odsProductEmbryoInventory.getRemark()); + odsProductEmbryoInventoryCorrelation1.setCreateBy(SecurityUtils.getUsername()); + odsProductEmbryoInventoryCorrelation1.setCreateDate(new Date()); + odsProductEmbryoInventoryMapper.insertOdsProductEmbryoInventoryCorrelation(odsProductEmbryoInventoryCorrelation1); + } + return ruslt; + } + + @Override + public OdsProductEmbryoInventory selectOdsProductEmbryoInventory(OdsProductEmbryoInventory odsProductEmbryoInventory) { + OdsProductEmbryoInventory odsProductEmbryoInventorytwm=new OdsProductEmbryoInventory(); + DynamicDataSourceContextHolder.push("ds_" + odsProductEmbryoInventory.getSiteCode()); + List odsProductEmbryoInventoryCorrelationList=new ArrayList<>(); + OdsProductEmbryoInventory odsProductEmbryoInventory1=new OdsProductEmbryoInventory(); + odsProductEmbryoInventory1.setOrderCode(odsProductEmbryoInventory.getOrderCode()); + odsProductEmbryoInventory1.setActive("1"); + odsProductEmbryoInventory1.setOrderStatus("0");//带盘点 + List odsProductEmbryoInventoryList=odsProductEmbryoInventoryMapper.selectOdsProductEmbryoInventoryList(odsProductEmbryoInventory1); + if (odsProductEmbryoInventoryList.size()>0){ + odsProductEmbryoInventorytwm= odsProductEmbryoInventoryList.get(0); + OdsProductEmbryoInventory odsProductEmbryoInventory3=new OdsProductEmbryoInventory(); + odsProductEmbryoInventory3.setOrderCode(odsProductEmbryoInventorytwm.getOrderCode()); + odsProductEmbryoInventory3.setActive("1"); + odsProductEmbryoInventoryCorrelationList =odsProductEmbryoInventoryMapper.selectOdsProductEmbryoInventoryCorrelationList(odsProductEmbryoInventory3); + } + odsProductEmbryoInventorytwm.setOdsProductEmbryoInventoryCorrelationList(odsProductEmbryoInventoryCorrelationList); + return odsProductEmbryoInventorytwm; + } + + @Override + public OdsProductEmbryoInventoryCorrelation selectScanningTray(OdsProductEmbryoInventory odsProductEmbryoInventory) { + DynamicDataSourceContextHolder.push("ds_" + odsProductEmbryoInventory.getSiteCode()); + OdsProductEmbryoInventory odsProductEmbryoInventory1=new OdsProductEmbryoInventory(); + odsProductEmbryoInventory1.setOrderCode(odsProductEmbryoInventory.getOrderCode()); + odsProductEmbryoInventory1.setUserDefined2(odsProductEmbryoInventory.getSn()); + List odsProductEmbryoInventoryCorrelationList= odsProductEmbryoInventoryMapper.selectOdsProductEmbryoInventoryCorrelationList(odsProductEmbryoInventory1); + if (odsProductEmbryoInventoryCorrelationList.size()>0){ + return odsProductEmbryoInventoryCorrelationList.get(0); + } + return null; + } + + @Override + public String confirmInventory(OdsProductEmbryoInventory odsProductEmbryoInventory) { + String ruslt="成功"; + DynamicDataSourceContextHolder.push("ds_" + odsProductEmbryoInventory.getSiteCode()); + OdsProductEmbryoInventory odsProductEmbryoInventory1=new OdsProductEmbryoInventory(); + + odsProductEmbryoInventory1.setID(odsProductEmbryoInventory.getID()); + odsProductEmbryoInventory1.setOrderStatus("1"); + // odsProductEmbryoInventory1.setUserDefined2(odsProductEmbryoInventory.getUserDefined2()); + odsProductEmbryoInventory1.setRealityNumber(odsProductEmbryoInventory.getRealityNumber()); + odsProductEmbryoInventoryMapper.updateOdsProductEmbryoInventoryCorrelation(odsProductEmbryoInventory1); + return ruslt; + } + + @Override + public String cancelInventory(OdsProductEmbryoInventory odsProductEmbryoInventory) { + String ruslt="成功"; + DynamicDataSourceContextHolder.push("ds_" + odsProductEmbryoInventory.getSiteCode()); + OdsProductEmbryoInventory odsProductEmbryoInventory1=new OdsProductEmbryoInventory(); + + odsProductEmbryoInventory1.setID(odsProductEmbryoInventory.getID()); + odsProductEmbryoInventory1.setOrderStatus("0"); + //odsProductEmbryoInventory1.setUserDefined2(odsProductEmbryoInventory.getUserDefined2()); + odsProductEmbryoInventory1.setRealityNumber(new BigDecimal("0")); + odsProductEmbryoInventoryMapper.updateOdsProductEmbryoInventoryCorrelation(odsProductEmbryoInventory1); + return ruslt; + } + + /** + * 盘点后,如果盘点总数量=盘点单总数量,则状态更新为已完成,如果不等于,则状态更新为待调整; + * @param odsProductEmbryoInventory + * @return + */ + @Override + public String confirmCompletion(OdsProductEmbryoInventory odsProductEmbryoInventory) { + String ruslt="成功"; + DynamicDataSourceContextHolder.push("ds_" + odsProductEmbryoInventory.getSiteCode()); + BigDecimal realityNumber= odsProductEmbryoInventory.getRealityNumber(); + BigDecimal locNumber= odsProductEmbryoInventory.getLocNumber(); + // 获取当前时间 + Date currentDate = new Date(); + // 使用SimpleDateFormat格式化时间 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // 将当前时间格式化为字符串 + String date = dateFormat.format(currentDate); + if (realityNumber.compareTo(locNumber) == 0) { // 如果实际数量等于库存地点数量 + // 更新状态为已完成---3 + OdsProductEmbryoInventory odsProductEmbryoInventory1=new OdsProductEmbryoInventory(); + odsProductEmbryoInventory1.setID(odsProductEmbryoInventory.getID()); + odsProductEmbryoInventory1.setOrderStatus("3"); + odsProductEmbryoInventory1.setUserDefined2(odsProductEmbryoInventory.getCreateBy()); + odsProductEmbryoInventory1.setUserDefined5(date); + odsProductEmbryoInventoryMapper.updateOdsProductEmbryoInventory(odsProductEmbryoInventory1); + } else { + // 更新状态为待调整--1 + OdsProductEmbryoInventory odsProductEmbryoInventory1=new OdsProductEmbryoInventory(); + odsProductEmbryoInventory1.setID(odsProductEmbryoInventory.getID()); + odsProductEmbryoInventory1.setOrderStatus("1"); + odsProductEmbryoInventory1.setUserDefined5(date);//盘点时间 + odsProductEmbryoInventory1.setUserDefined2(odsProductEmbryoInventory.getCreateBy());//盘点人 + odsProductEmbryoInventoryMapper.updateOdsProductEmbryoInventory(odsProductEmbryoInventory1); + } + return ruslt; + } + + @Override + public List selectOdsProductEmbryoInventoryCorrelation(OdsProductEmbryoInventory odsProductEmbryoInventory) { + DynamicDataSourceContextHolder.push("ds_" + odsProductEmbryoInventory.getSiteCode()); + OdsProductEmbryoInventory odsProductEmbryoInventory1=new OdsProductEmbryoInventory(); + odsProductEmbryoInventory1.setOrderStatus("1"); + odsProductEmbryoInventory1.setOrderCode(odsProductEmbryoInventory.getOrderCode()); + odsProductEmbryoInventory1.setActive("1"); + List odsProductEmbryoInventoryCorrelationList= odsProductEmbryoInventoryMapper.selectOdsProductEmbryoInventoryCorrelationList(odsProductEmbryoInventory1); + return odsProductEmbryoInventoryCorrelationList; + } + + @DS("#header.poolName") + private String getPurcode(String factorycode, String orderType) { + + String purcode = ""; + String curDate = new SimpleDateFormat("yyyyMMdd").format(new Date()); + + Integer vaule = purcodeMapper.queryCurValue(orderType, curDate); + if (vaule == null) { + Purcode purcodeO = new Purcode(); + purcodeO.setCurDate(curDate); + purcodeO.setOrderType(orderType); + purcodeO.setValue(1); + int count = purcodeMapper.insert(purcodeO); + if (count != 1) { + return ""; + } + if (factorycode != null && !factorycode.equals("")) { + purcode = orderType + factorycode + curDate.substring(2) + String.format("%04d", 1); + } else { + purcode = orderType + curDate.substring(2) + String.format("%04d", 1); + } + + } else { + int count = purcodeMapper.updateCurValue(orderType, curDate, vaule); + if (count != 1) { + return ""; + } + + if (factorycode != null && !factorycode.equals("")) { + purcode = orderType + factorycode + curDate.substring(2) + String.format("%04d", vaule + 1); + } else { + purcode = orderType + curDate.substring(2) + String.format("%04d", vaule + 1); + } + } + return purcode; + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsProductPutServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsProductPutServiceImpl.java index ed4fbd997..d6c81823f 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsProductPutServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsProductPutServiceImpl.java @@ -11,6 +11,8 @@ import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.domain.R; import com.op.common.core.utils.DateUtils; 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.system.api.RemoteQualityService; import com.op.system.api.domain.quality.QcCheckTaskWarehousingDTO; import com.op.system.api.domain.wms.wmsReportWork; @@ -321,7 +323,12 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { @DS("#header.poolName") public List getReportList(wmsReportWork mesReportWork) { List rlist = wmsProductPutMapper.getReportList(mesReportWork); - ; +// //加上已经过账的数量reportCode work_order batch_number batch +// for (wmsReportWork wmsReportWork: +// rlist) { +// String SAPquantity= wmsProductPutMapper.selectWmsProductPutNum(wmsReportWork); +// wmsReportWork.setSAPquantity(SAPquantity); +// } return rlist; } @@ -333,6 +340,7 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { String formattedDate = dateFormat.format(date);//批次 //List wmsProductPutList= new ArrayList<>(); List wmsReportWorkList = new ArrayList<>(); + List wmsReportWorkListTWO = new ArrayList<>(); List wmsReportWorkListRk = new ArrayList<>(); List wmsReportWorkListagain = new ArrayList<>(); //获取当前所选工厂 @@ -355,16 +363,36 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { wmsProductPutk.setStatus("1"); wmsProductPutk.setUnitOfMeasure(mesReportWork.getUnit()); wmsProductPutk.setBatchNumber(mesReportWork.getBatch());// - //wmsProductPutk.setSapStatus("2"); + // wmsProductPutk.setSapStatus("2");//过账失败的 List wmsProductPutList = wmsProductPutMapper.selectWmsProductPutList(wmsProductPutk); if (wmsProductPutList.size() > 0) { String id = wmsProductPutList.get(0).getId(); mesReportWork.setId(id); - wmsReportWorkList.add(mesReportWork); + wmsReportWorkList.add(mesReportWork);//已经插入 } else { - wmsReportWorkListRk.add(mesReportWork); + wmsReportWorkListRk.add(mesReportWork);//第一次的 } } + for (wmsReportWork mesReportWork : + wmsReportWorkListRk) { +// WmsProductPut wmsProductPutk = new WmsProductPut(); +// wmsProductPutk.setWorkOrder(mesReportWork.getReportCode()); +// wmsProductPutk.setFactoryCode(factoryCode); +// wmsProductPutk.setWhCode(mesReportWork.getWhCode());//仓库编码 +// wmsProductPutk.setProductName(mesReportWork.getProductName()); +// wmsProductPutk.setProductCode(mesReportWork.getProductCode()); +// wmsProductPutk.setProductOrder(mesReportWork.getWorkorderCodeSap()); +// wmsProductPutk.setPlanQuantity(mesReportWork.getQuantityFeedback()); +// wmsProductPutk.setPutQuantity(mesReportWork.getQuantityQualified()); +// wmsProductPutk.setStatus("1"); +// wmsProductPutk.setUnitOfMeasure(mesReportWork.getUnit()); +// wmsProductPutk.setBatchNumber(mesReportWork.getBatch());// +// wmsProductPutk.setSapStatus("2"); +// List wmsProductPutList = wmsProductPutMapper.selectWmsProductPutList(wmsProductPutk); +// if (wmsProductPutList.size() > 0) {//已经插入 + wmsReportWorkListagain.add(mesReportWork);// +// } + } for (wmsReportWork mesReportWork : wmsReportWorkList) { WmsProductPut wmsProductPutk = new WmsProductPut(); @@ -381,10 +409,12 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { wmsProductPutk.setBatchNumber(mesReportWork.getBatch());// wmsProductPutk.setSapStatus("2"); List wmsProductPutList = wmsProductPutMapper.selectWmsProductPutList(wmsProductPutk); - if (wmsProductPutList.size() > 0) { - wmsReportWorkListagain.add(mesReportWork);//再次过账 + if (wmsProductPutList.size() > 0) {//已经插入且失败的 + wmsReportWorkListTWO.add(mesReportWork);// } } + + //先屏蔽起来 for (wmsReportWork mesReportWork : wmsReportWorkListRk) { @@ -406,7 +436,7 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { //List wmsProductPutList= wmsProductPutMapper.selectWmsProductPutList(wmsProductPutk); wmsProductPutk.setAttr3(formattedDate);// - wmsProductPutk.setCreateBy(mesReportWork.getCreateBy()); + wmsProductPutk.setCreateBy(SecurityUtils.getUsername()); wmsProductPutk.setCreateTime(new Date()); wmsProductPutk.setProductDate(mesReportWork.getProductDate()); @@ -422,7 +452,7 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { wmsProductPutRecords.setWhCode(mesReportWork.getWhCode());//仓库编码 wmsProductPutRecords.setId(IdUtils.fastSimpleUUID()); wmsProductPutRecords.setNumber(mesReportWork.getQuantityQualified().toString()); - wmsProductPutRecords.setCreateBy(mesReportWork.getCreateBy()); + wmsProductPutRecords.setCreateBy(SecurityUtils.getUsername()); wmsProductPutRecords.setCreateTime(new Date()); wmsProductPutRecordsMapper.insertWmsProductPutRecords(wmsProductPutRecords); @@ -440,7 +470,7 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { List wmsFpStorageNewsList = wmsFpStorageNewsMapper.selectWmsFpStorageNewsList(wmsFpStorageNews); wmsFpStorageNews.setStorageId(IdUtils.fastSimpleUUID()); wmsFpStorageNews.setAmount(mesReportWork.getQuantityQualified()); - wmsFpStorageNews.setCreateBy(mesReportWork.getCreateBy()); + wmsFpStorageNews.setCreateBy(SecurityUtils.getUsername()); wmsFpStorageNews.setCreateTime(new Date()); if (wmsFpStorageNewsList.size() > 0) { WmsFpStorageNews wmsFpStorageNews1 = wmsFpStorageNewsList.get(0); @@ -462,8 +492,12 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { map.put("LGORT", mesReportWork.getWhCode()); map.put("QUANTITY", mesReportWork.getQuantityQualified()); map.put("ERFME", mesReportWork.getUnit()); - String batch = mesReportWork.getBatch().substring(12); - map.put("BATCH", batch); + if (mesReportWork.getBatch().length()>12){ + String batch = mesReportWork.getBatch().substring(12); + map.put("BATCH", batch); + }else { + map.put("BATCH", mesReportWork.getBatch()); + } String formattedsDate = mesReportWork.getProductDate().replace("-", ""); map.put("HSDAT", formattedsDate); mapList.add(map); @@ -487,10 +521,10 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { wmsProductPutMapper.updateWmsProductPut(wmsProductPut2); } } - if (wmsReportWorkListagain.size() > 0) { + if (wmsReportWorkListTWO.size() > 0) { List> mapList = new ArrayList<>(); for (wmsReportWork mesReportWork : - wmsReportWorkListagain) { + wmsReportWorkListTWO) { Map map = new HashMap<>(); map.put("AUFNR", mesReportWork.getWorkorderCodeSap()); map.put("WERKS", factoryCode); @@ -508,7 +542,7 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { int code = result.getCode(); String msg = result.getMsg(); for (wmsReportWork mesReportWork : - wmsReportWorkListagain) { + wmsReportWorkListTWO) { WmsProductPut wmsProductPut2 = new WmsProductPut(); wmsProductPut2.setId(mesReportWork.getId()); wmsProductPut2.setSapMessage(msg); @@ -522,7 +556,7 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { wmsProductPutMapper.updateWmsProductPut(wmsProductPut2); } } -// + // for (wmsReportWork wmsReportWork: // wmsReportWorkListagain) { // QcCheckTaskWarehousingDTO qcCheckTaskWarehousingDTO = new QcCheckTaskWarehousingDTO(); @@ -541,7 +575,8 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { // Date productDate = simpleDateFormat.parse(wmsReportWork.getProductDate()); // qcCheckTaskWarehousingDTO.setIncomeTime(productDate); // //qcCheckTaskWarehousingDTO. -// remoteQualityService.createProductTask(qcCheckTaskWarehousingDTO); +// R productTask= remoteQualityService.createProductTask(qcCheckTaskWarehousingDTO); +// productTask.getData(); // } String SUCCESS = "操作完成"; diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/BaseDictDataMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/BaseDictDataMapper.xml new file mode 100644 index 000000000..0a50f4e9d --- /dev/null +++ b/op-modules/op-wms/src/main/resources/mapper/wms/BaseDictDataMapper.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark + from base_dict_data + + + + + + + + + + + + + + delete from base_dict_data where dict_code = #{dictCode} + + + + delete from base_dict_data where dict_code in + + #{dictCode} + + + + + update base_dict_data + + dict_sort = #{dictSort}, + dict_label = #{dictLabel}, + dict_value = #{dictValue}, + dict_type = #{dictType}, + css_class = #{cssClass}, + list_class = #{listClass}, + is_default = #{isDefault}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = GETDATE() + + where dict_code = #{dictCode} + + + + update base_dict_data set dict_type = #{newDictType} where dict_type = #{oldDictType} + + + + insert into base_dict_data( + dict_sort, + dict_label, + dict_value, + dict_type, + css_class, + list_class, + is_default, + status, + remark, + create_by, + create_time + )values( + #{dictSort}, + #{dictLabel}, + #{dictValue}, + #{dictType}, + #{cssClass}, + #{listClass}, + #{isDefault}, + #{status}, + #{remark}, + #{createBy}, + GETDATE() + ) + + + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/BaseDictTypeMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/BaseDictTypeMapper.xml new file mode 100644 index 000000000..bbf7ff294 --- /dev/null +++ b/op-modules/op-wms/src/main/resources/mapper/wms/BaseDictTypeMapper.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + select dict_id, dict_name, dict_type, status, create_by, create_time, remark + from base_dict_type + + + + + + + + + + + + + + delete from base_dict_type where dict_id = #{dictId} + + + + delete from base_dict_type where dict_id in + + #{dictId} + + + + + update base_dict_type + + dict_name = #{dictName}, + dict_type = #{dictType}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = GETDATE() + + where dict_id = #{dictId} + + + + insert into base_dict_type( + dict_name, + dict_type, + status, + remark, + create_by, + create_time + )values( + #{dictName}, + #{dictType}, + #{status}, + #{remark}, + #{createBy}, + GETDATE() + ) + + + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProductEmbryoInventoryMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProductEmbryoInventoryMapper.xml index 2c9f65f9d..42eb0fb56 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProductEmbryoInventoryMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProductEmbryoInventoryMapper.xml @@ -37,6 +37,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select Site_code, ID, Order_Code, Material_Code, Material_Desc, Plan_Date, Loc_Number, Unit, Reality_Number, Order_Status, User_Defined1, Loc_Code, User_Defined2, User_Defined3, User_Defined4, User_Defined5, User_Defined6, User_Defined7, User_Defined8, User_Defined9, User_Defined10, User_Defined11, Remark, Create_By, Create_Date, Last_Update_By, Last_Update_Date, Active, Enterprise_Id, Enterprise_Code from ods_product_embryo_inventory @@ -139,6 +171,133 @@ where ID = #{ID} + + insert into ods_product_embryo_Inventory_correlation + + Site_code, + + ID, + + Order_Code, + + Material_Code, + + Material_Desc, + + Plan_Date, + + Loc_Number, + + Unit, + + Reality_Number, + + Order_Status, + + User_Defined1, + + Loc_Code, + + User_Defined2, + + User_Defined3, + + User_Defined4, + + User_Defined5, + + User_Defined6, + + User_Defined7, + + User_Defined8, + + User_Defined9, + + User_Defined10, + + User_Defined11, + + Remark, + + Create_By, + + Create_Date, + + Last_Update_By, + + Last_Update_Date, + + Active, + + Enterprise_Id, + + Enterprise_Code, + + + + #{siteCode}, + + #{ID}, + + #{orderCode}, + + #{materialCode}, + + #{materialDesc}, + + #{planDate}, + + #{locNumber}, + + #{unit}, + + #{realityNumber}, + + #{orderStatus}, + + #{userDefined1}, + + #{locCode}, + + #{userDefined2}, + + #{userDefined3}, + + #{userDefined4}, + + #{userDefined5}, + + #{userDefined6}, + + #{userDefined7}, + + #{userDefined8}, + + #{userDefined9}, + + #{userDefined10}, + + #{userDefined11}, + + #{Remark}, + + #{createBy}, + + #{createDate}, + + #{lastUpdateBy}, + + #{lastUpdateDate}, + + #{Active}, + + #{enterpriseId}, + + #{enterpriseCode}, + + + insert into ods_product_embryo_inventory @@ -372,4 +531,221 @@ #{ID} + + + update ods_product_embryo_Inventory_correlation + + Site_code = + #{siteCode}, + + Order_Code = + #{orderCode}, + + Material_Code = + #{materialCode}, + + Material_Desc = + #{materialDesc}, + + Plan_Date = + #{planDate}, + + Loc_Number = + #{locNumber}, + + Unit = + #{Unit}, + + Reality_Number = + #{realityNumber}, + + Order_Status = + #{orderStatus}, + + User_Defined1 = + #{userDefined1}, + + Loc_Code = + #{locCode}, + + User_Defined2 = + #{userDefined2}, + + User_Defined3 = + #{userDefined3}, + + User_Defined4 = + #{userDefined4}, + + User_Defined5 = + #{userDefined5}, + + User_Defined6 = + #{userDefined6}, + + User_Defined7 = + #{userDefined7}, + + User_Defined8 = + #{userDefined8}, + + User_Defined9 = + #{userDefined9}, + + User_Defined10 = + #{userDefined10}, + + User_Defined11 = + #{userDefined11}, + + Remark = + #{Remark}, + + Create_By = + #{createBy}, + + Create_Date = + #{createDate}, + + Last_Update_By = + #{lastUpdateBy}, + + Last_Update_Date = + #{lastUpdateDate}, + + Active = + #{Active}, + + Enterprise_Id = + #{enterpriseId}, + + Enterprise_Code = + #{enterpriseCode}, + + + where ID = #{ID} + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/WmsProductPutMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/WmsProductPutMapper.xml index 3b3be85ec..80963fd33 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/WmsProductPutMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/WmsProductPutMapper.xml @@ -81,6 +81,7 @@ and attr9 = #{attr9} and attr10 = #{attr10} + ORDER BY create_time DESC + + + +