diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/HRInfo.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/HRInfo.java index e04cb185..7e8f4eef 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/HRInfo.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/HRInfo.java @@ -60,6 +60,98 @@ public class HRInfo extends BaseEntity { /** 角色ID */ private Long roleId; private String datasourceId; + private String post; + /**hr接口**/ + private String peWorkID;//工号 + private String peName;//员工姓名 + private String peSex;//性别 F女生 M男 + private String peMobilePhone;//手机号 + //派驻1 人才库-1 试用10 实习11 见习期19 正式工20 离职30 自离31 辞退32 开除33 删除99 + private String peDocStatus; + private String posnm;//岗位名称 + private String poscd;//岗位编码 + private String ounam;//部门名称 + private String oucod;//部门编码 + + public String getPeWorkID() { + return peWorkID; + } + + public void setPeWorkID(String peWorkID) { + this.peWorkID = peWorkID; + } + + public String getPeName() { + return peName; + } + + public void setPeName(String peName) { + this.peName = peName; + } + + public String getPeSex() { + return peSex; + } + + public void setPeSex(String peSex) { + this.peSex = peSex; + } + + public String getPeMobilePhone() { + return peMobilePhone; + } + + public void setPeMobilePhone(String peMobilePhone) { + this.peMobilePhone = peMobilePhone; + } + + public String getPeDocStatus() { + return peDocStatus; + } + + public void setPeDocStatus(String peDocStatus) { + this.peDocStatus = peDocStatus; + } + + public String getPosnm() { + return posnm; + } + + public void setPosnm(String posnm) { + this.posnm = posnm; + } + + public String getPoscd() { + return poscd; + } + + public void setPoscd(String poscd) { + this.poscd = poscd; + } + + public String getOunam() { + return ounam; + } + + public void setOunam(String ounam) { + this.ounam = ounam; + } + + public String getOucod() { + return oucod; + } + + public void setOucod(String oucod) { + this.oucod = oucod; + } + + public String getPost() { + return post; + } + + public void setPost(String post) { + this.post = post; + } public String getDatasourceId() { return datasourceId; diff --git a/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java b/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java index 5ec9f551..fb387861 100644 --- a/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java +++ b/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java @@ -168,17 +168,13 @@ public class RyTask { logger.info("++hr人力基础数据同步+开始++syncUserInfoTask+++++"); remoteUserService.syncUserInfoTask(); } - /************hr 人力基础数据定时任务结束*****************/ - /************岗位基础数据定时任务开始*****************/ //岗位基本数据同步每天 public void sysPostInfoTask(){ logger.info("++hr岗位基础数据同步+开始++sysPostInfoTask+++++"); remoteUserService.sysPostInfoTask(); } - /************岗位基础数据定时任务开始*****************/ - /************部门基础数据定时任务开始*****************/ //部门基本数据同步每天 public void sysDeptInfoTask(){ logger.info("++hr部门基础数据同步+开始++sysPostInfoTask+++++"); diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java index beaa3cfa..10aa4395 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java @@ -111,6 +111,15 @@ public class MesReportWorkConsume extends BaseEntity { private String warehouseCode; private String warehouseName; + private String planQuantity; + + public String getPlanQuantity() { + return planQuantity; + } + + public void setPlanQuantity(String planQuantity) { + this.planQuantity = planQuantity; + } public String getWarehouseCode() { return warehouseCode; 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 b8c3ca60..2edfbc70 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 @@ -451,7 +451,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { mapBom = new HashMap(); mapBom.put("P_AUFNR",updateBom.getWorkorderCodeSap());// 订单号 例如:000100308287 mapBom.put("P_MATNR",updateBom.getMaterialCode());// 物料号 例如:000000040000015089 - mapBom.put("P_GMEIN",updateBom.getUnit());// 基本计量单位 例如:m + //mapBom.put("P_GMEIN",updateBom.getUnit());// 基本计量单位 例如:m mapBom.put("P_WERKS",workOrderCodes.get(0).getFactoryCode());//物料工厂 例如:1000 mapBom.put("P_LGORT",updateBom.getWarehouseCode());//仓库编号 例如:0013 mapList.add(mapBom); diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml index 559692d2..db3b3a7a 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml @@ -104,10 +104,13 @@ mrwc.recoil, pow.workorder_code_sap workorderCodeSap, mrwc.attr1, - mrwc.warehouse_code warehouseCode + mrwc.warehouse_code warehouseCode, + mpd.quantity planQuantity from mes_report_work_consume mrwc left join pro_order_workorder pow on mrwc.workorder_code = pow.workorder_code - where mrwc.del_flag = '0' and pow.del_flag = '0' + left join mes_prepare_detail mpd on mpd.parent_work_order = pow.belong_work_order + and mpd.material_code = mrwc.material_code + where mrwc.del_flag = '0' and pow.del_flag = '0' and mpd.del_flag = '0' and mrwc.workorder_code = #{workorderCode} order by mrwc.recoil,mrwc.attr1 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 4333e2ab..85ccc6cf 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 @@ -77,7 +77,7 @@ public interface OpenMapper { public int addBatch(@Param("list") List items); - List getCheckUsers(String materialCode); + List getCheckUsers(String checkType); public int addCheckUsers(@Param("list") List users); } 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 b40e18a6..da094dcb 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 @@ -346,7 +346,7 @@ public class OpenServiceImpl implements OpenService { qctp.setMaterialCode(qcCheckTaskProduce.getMaterialCode());//特性 /**qc_user_material取默认检查人**/ - List users = openMapper.getCheckUsers(qcCheckTaskProduce.getOrderNo()); + List users = openMapper.getCheckUsers(qcCheckTaskProduce.getCheckType()); if (CollectionUtils.isEmpty(users)) { QcUserMaterialDTO dto0 = new QcUserMaterialDTO(); dto0.setId(IdUtils.fastSimpleUUID()); @@ -474,9 +474,10 @@ public class OpenServiceImpl implements OpenService { public AjaxResult GetHrUserInfo(String dateTime) { try { StringBuilder postDataBuilder = new StringBuilder(); - postDataBuilder.append("createTime=").append("dateTime"); + postDataBuilder.append("createTime=").append(dateTime); String result = HttpUtils.sendPost(url_user,postDataBuilder.toString()); - return success(result); + JSONArray jsonArray=JSONArray.parseArray(result); + return success("获取成功",jsonArray); } catch (Exception e) { e.printStackTrace(); return error(e.getMessage()); 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 a70391f5..6e780f62 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 @@ -199,8 +199,7 @@ select qum.user_code userCode, qum.user_name userName from qc_user_material qum - left join pro_order_workorder pow on pow.workorder_code = qum.material_code - where pow.workorder_code = #{workorderCode} and pow.del_flag = '0' and qum.del_flag = '0' + where qum.material_code = #{checkType} and pow.del_flag = '0' and qum.del_flag = '0' diff --git a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderController.java b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderController.java index 9378f944..f3915d6f 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderController.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderController.java @@ -153,6 +153,13 @@ public class ProOrderController extends BaseController { return proOrderService.subSplitOrder(splitOrderDTO); } + + @PostMapping("/checkRepeatBatchCodes") + //@RequiresPermissions("mes:pro:order:add") + @Log(title = "提交拆分订单-批次重复确认", businessType = BusinessType.INSERT) + public String checkRepeatBatchCodes(@RequestBody SplitOrderDTO splitOrderDTO) { + return proOrderService.checkRepeatBatchCodes(splitOrderDTO); + } /** * 获取换算值 * diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java index 19098c91..b9e518f0 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java @@ -1,5 +1,6 @@ package com.op.plan.mapper; +import com.op.plan.domain.Batch; import com.op.plan.domain.ProOrder; import com.op.plan.domain.ProOrderWorkorder; import com.op.plan.domain.ProWetMaterialPlanDetail; @@ -194,5 +195,7 @@ public interface ProOrderWorkorderMapper { List getOrderNotW0(@Param("workorderCodes") String[] workorderCodes); List getOrderByOrders(@Param("orderIds") String[] orderIds); + + List checkBatchCodes(@Param("batchs") List formFields); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderService.java b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderService.java index 2b098a57..2edcec22 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderService.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderService.java @@ -143,4 +143,6 @@ public interface IProOrderService { int getProSortNo(ProOrder proOrder); int deleteOrder(String[] orderCodes); + + String checkRepeatBatchCodes(SplitOrderDTO splitOrderDTO); } 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 52ad1800..5ae7f845 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 @@ -1171,6 +1171,15 @@ public class ProOrderServiceImpl implements IProOrderService { } return 1; } + @Override + @DS("#header.poolName") + public String checkRepeatBatchCodes(SplitOrderDTO splitOrderDTO) { + List repeatBatchCodes = proOrderWorkorderMapper.checkBatchCodes(splitOrderDTO.getFormFields()); + if(!CollectionUtils.isEmpty(repeatBatchCodes)){ + return StringUtils.join(repeatBatchCodes, ","); + } + return ""; + } public static void main(String args[]){ String arrayStr = "[[\"GX01\",\"LG1\"],[\"GX01\",\"LG2\"],[\"GX02\",\"S1\"],[\"GX02\",\"S2\"],[\"GX03\",\"HF01\"],[\"GX04\",\"SPJ01\"]]"; diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml index abf3252d..583eb34c 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml @@ -543,6 +543,14 @@ and status in ('o1','o0') and del_flag = '0' + insert into mes_prepare_detail 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 e5c44a09..75d7d2b9 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 @@ -21,10 +21,13 @@ import com.op.common.core.utils.bean.BeanUtils; import com.op.common.security.utils.SecurityUtils; import com.op.quality.domain.*; import com.op.system.api.RemoteOpenService; +import com.op.system.api.RemoteSapService; import com.op.system.api.RemoteUserService; import com.op.system.api.domain.SysRole; import com.op.system.api.domain.SysUser; +import com.op.system.api.domain.quality.HRInfo; import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO; +import com.op.system.api.domain.sap.SapSupplier; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; @@ -62,6 +65,9 @@ public class QcCheckTaskIncomeController extends BaseController { @Autowired private RemoteUserService remoteUserService; + @Autowired + private RemoteSapService remoteSapService; + /** * 查询来料检验列表 */ @@ -156,10 +162,15 @@ public class QcCheckTaskIncomeController extends BaseController { 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue()); try { + dateSources.forEach(dateSource -> { - Runnable run = () -> createIncomeBatchTaskFunc(dateSource.get("poolName")); - executorService.execute(run); + if(!"ds_999".equals(dateSource.get("poolName"))){ + Runnable run = () -> createIncomeBatchTaskFunc(dateSource.get("poolName")); + executorService.execute(run); + } + }); + } catch (Exception e) { logger.error("controller == createIncomeBatchTask == exception", e); return error("controller == createIncomeBatchTask == exception"); @@ -174,32 +185,39 @@ public class QcCheckTaskIncomeController extends BaseController { DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key Date taskTime = DateUtils.getNowDate(); logger.info("++++++++++++" + poolName + "工厂来料检验批量创建任务开始+++时间:"+ taskTime +"++++++++++"); - List incomeBatchLists = qcCheckTaskIncomeService.getIncomeBatchList(poolName); - List batchRecordIds = new ArrayList<>(); + Map mapBom = new HashMap(); + mapBom.put("P_WERKS",poolName.replace("ds_",""));//物料工厂 例如:1000 + logger.info("来料信息查询请求:" + JSONObject.toJSONString(mapBom)); + R incomeR = remoteSapService.inComingCheck(mapBom); + if(incomeR.getCode()==500){ + logger.info("来料信息查询请求:" + JSONObject.toJSONString(incomeR)); + return AjaxResult.error(JSONObject.toJSONString(incomeR)); + } + logger.info("来料信息查询结果:" + JSONObject.toJSONString(incomeR)); + List incomeAll = (List)incomeR.getData(); + //已经生成过检验任务的采购订单 + List todayIncomeLists = qcCheckTaskIncomeService.getTodayIncomeLists(); + List newIncomes = incomeAll.stream() + .filter(item -> !todayIncomeLists.contains(item.getOrderNo())) + .collect(Collectors.toList()); + int successNum = 0;//成功任务数 int failNum = 0;//失败任务数 - if(incomeBatchLists != null){ - for( int i = 0 ; i < incomeBatchLists.size();){ - QcCheckTaskIncomeDTO qcCheckTaskIncomedto = new QcCheckTaskIncomeDTO(); - QcCheckTaskIncome income = incomeBatchLists.get(i); - BeanUtils.copyProperties(income,qcCheckTaskIncomedto); - //内层一个一个创建任务 - AjaxResult ajaxResult = createIncomeTask(qcCheckTaskIncomedto); + if(!CollectionUtils.isEmpty(newIncomes)){ + logger.info("工厂来料检验任务生成参数:" + JSONObject.toJSONString(newIncomes)); + for(QcCheckTaskIncomeDTO income:newIncomes){ + AjaxResult ajaxResult = createIncomeTask(income); if(ajaxResult.isSuccess()){ - batchRecordIds.add(qcCheckTaskIncomedto.getRecordId()); successNum = successNum + 1; logger.info(poolName + "工厂的" + income.getCheckNo()+"来料检验创建任务成功++++++++++"); }else if(ajaxResult.isError()){ failNum = failNum +1; logger.info(poolName + "工厂的" + income.getCheckNo()+"来料检验创建任务失败++++++++++"); } - i++; } }else{ logger.info("++++++++++++" + poolName + "工厂来料检验没有可创建的任务++++++++++"); } - //批量修改原表中的check_status和check_time - int upate = qcCheckTaskIncomeService.updateIncomeBatchList(batchRecordIds,taskTime); logger.info("++++++++++++" + poolName + "工厂来料检验批量创建任务结束:成功"+ successNum +"失败"+ failNum +"+++++"); return success(); } catch (Exception e) { @@ -209,9 +227,7 @@ public class QcCheckTaskIncomeController extends BaseController { } @PostMapping("/createIncomeTask") - public AjaxResult createIncomeTask(@RequestBody QcCheckTaskIncomeDTO qcCheckTaskIncome0) { - QcCheckTaskIncome qcCheckTaskIncome = new QcCheckTaskIncome(); - BeanUtils.copyProperties(qcCheckTaskIncome0, qcCheckTaskIncome); + public AjaxResult createIncomeTask(@RequestBody QcCheckTaskIncomeDTO qcCheckTaskIncome) { if (StringUtils.isBlank(qcCheckTaskIncome.getOrderNo())) { return error("[orderNo]不能为空"); @@ -222,12 +238,7 @@ public class QcCheckTaskIncomeController extends BaseController { if (StringUtils.isBlank(qcCheckTaskIncome.getMaterialCode())) { return error("[materialCode]不能为空"); } - if (StringUtils.isBlank(qcCheckTaskIncome.getCheckType())) { - return error("[checkType]不能为空"); - } - if (StringUtils.isBlank(qcCheckTaskIncome.getFactoryCode())) { - return error("[factoryCode]不能为空"); - } + if (StringUtils.isBlank(qcCheckTaskIncome.getSupplierCode())) { return error("[supplierCode]不能为空"); } @@ -237,14 +248,13 @@ public class QcCheckTaskIncomeController extends BaseController { if (qcCheckTaskIncome.getIncomeTime() == null) { return error("[incomeTime]不能为空"); } - logger.info(qcCheckTaskIncome0.getFactoryCode() + "工厂来料检验任务生成开始================================"); - logger.info(qcCheckTaskIncome0.getFactoryCode() + "工厂来料检验任务生成参数:" + JSONObject.toJSONString(qcCheckTaskIncome)); - - int r = qcCheckTaskIncomeService.insertQcCheckTaskIncome(qcCheckTaskIncome); + QcCheckTaskIncome income = new QcCheckTaskIncome(); + BeanUtils.copyProperties(qcCheckTaskIncome,income); + int r = qcCheckTaskIncomeService.insertQcCheckTaskIncome(income); if (r > 0) { return toAjax(r); } - return error(qcCheckTaskIncome0.getFactoryCode() + "工厂添加失败:请检查物料的关联检测项" ); + return error("添加失败:请检查物料的关联检测项" ); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDefect.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDefect.java index 6be4541a..2899c7f1 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDefect.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDefect.java @@ -88,6 +88,34 @@ public class QcCheckTaskDefect extends BaseEntity { @Excel(name = "不合格数量") private BigDecimal noOkQuality; + private String defectCodes; + private String defectNames; + private String defectQualitys; + + public String getDefectCodes() { + return defectCodes; + } + + public void setDefectCodes(String defectCodes) { + this.defectCodes = defectCodes; + } + + public String getDefectNames() { + return defectNames; + } + + public void setDefectNames(String defectNames) { + this.defectNames = defectNames; + } + + public String getDefectQualitys() { + return defectQualitys; + } + + public void setDefectQualitys(String defectQualitys) { + this.defectQualitys = defectQualitys; + } + public String getBelongToDetail() { return belongToDetail; } 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 85df1935..e0df6f82 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 @@ -95,7 +95,7 @@ public class QcCheckTaskIncome extends BaseEntity { */ @Excel(name = "检测地点") private String checkLoc; - + private String checkLocName; /** * 检测状态 */ @@ -193,6 +193,14 @@ public class QcCheckTaskIncome extends BaseEntity { private String noOkQualityNames; private String noOkQualityVals; + public String getCheckLocName() { + return checkLocName; + } + + public void setCheckLocName(String checkLocName) { + this.checkLocName = checkLocName; + } + public String getNoOkQualityNames() { return noOkQualityNames; } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskDefectMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskDefectMapper.java index a2f3a5cb..53f4929e 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskDefectMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskDefectMapper.java @@ -1,8 +1,11 @@ package com.op.quality.mapper; import java.util.List; +import java.util.Map; import com.op.quality.domain.QcCheckTaskDefect; +import com.op.quality.domain.QcCheckTaskDetail; +import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; /** @@ -64,6 +67,6 @@ public interface QcCheckTaskDefectMapper { public int deleteQcCheckTaskDefectByBelongTo(String belongTo); public List selectDefectByBelongTo(String belongTo); - - + @MapKey("belongToDetail") + public Map getDefectMap(QcCheckTaskDetail qcCheckTaskDetail); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java index f2792672..36465d1c 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java @@ -88,9 +88,7 @@ public interface QcCheckTaskIncomeMapper { List selectQcCheckTaskCheckNoByRecordIds(String[] recordIds); - List getUserByMaterial(String materialCode); - - List getCheckUsers(String orderNo); + List getUserByCheckType(String checkType); int addCheckUsers(@Param("list") List users); @@ -112,4 +110,6 @@ public interface QcCheckTaskIncomeMapper { int updateIncomeBatchList(@Param("list") List batchRecordIds, @Param("time") Date taskTime); List getCheckLocList(QcDefectType qcDefectType); + + List getTodayIncomeLists(); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java index 77c2e48d..1ef4918f 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java @@ -98,4 +98,6 @@ public interface IQcCheckTaskIncomeService { int updateIncomeBatchList(List batchRecordIds , Date taskTime); List getCheckLocList(QcDefectType qcDefectType); + + List getTodayIncomeLists(); } 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 71992ffa..9ac1a3f5 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 @@ -210,11 +210,11 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { } //检验人插入 qcCheckTaskUserService.insertQcCheckTaskUserPDA(qcCheckTaskUserList); - }else{//上位机触发 + }else{ qcCheckTaskIncome.setCheckManName(""); qcCheckTaskIncome.setCheckManCode(""); /**qc_user_material取默认检查人**/ - List users = qcCheckTaskIncomeMapper.getCheckUsers(qcCheckTaskIncome.getOrderNo()); + List users = qcCheckTaskIncomeMapper.getUserByCheckType(qcCheckTaskIncome.getCheckType()); if(CollectionUtils.isEmpty(users)){ QcUserMaterialDTO dto0 = new QcUserMaterialDTO(); dto0.setId(IdUtils.fastSimpleUUID()); @@ -599,7 +599,7 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { break; } } - //TODO;today + int n = 0; QcCheckTaskIncome qcCheckTask = new QcCheckTaskIncome(); qcCheckTask.setUpdateBy(updateBy); @@ -610,14 +610,9 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { qcCheckTask.setCheckResult(result);//检验结果Y合格 N不合格 qcCheckTask.setIncomeBatchNo(qcCheckTaskIncome.getIncomeBatchNo()); BigDecimal noOkQquality = new BigDecimal("0"); - List defects = qcCheckTaskIncome.getDefects(); - for(QcCheckTaskDefect defect:defects){ - defect.setRecordId(IdUtils.fastSimpleUUID()); - defect.setCreateTime(nowTime); - defect.setCreateBy(updateBy); - defect.setFactoryCode(factoryCode); - defect.setBelongTo(belongId); - noOkQquality = noOkQquality.add(defect.getNoOkQuality()); + List defects0 = qcCheckTaskIncome.getDefects(); + for(QcCheckTaskDefect defect0:defects0){ + noOkQquality = noOkQquality.add(defect0.getNoOkQuality()); } qcCheckTask.setNoOkQuality(noOkQquality);//累计不合格数 qcCheckTask.setCheckManCode(qcCheckTaskIncome.getUpdateBy()); @@ -655,6 +650,28 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { /**qc_check_task_defect**/ n=qcCheckTaskIncomeMapper.deleteQcCheckTaskDefects(belongId); logger.info("清理qc_check_task_defect:"+n); + List defects = new ArrayList<>(); + QcCheckTaskDefect defect = null; + for(QcCheckTaskDetail detail:details){ + if(StringUtils.isNotBlank(detail.getDefectCodes())){ + String[] defectCodes = detail.getDefectCodes().split(","); + String[] defectNames = detail.getDefectNames().split(","); + String[] defectQualitys = detail.getDefectQualitys().split(","); + for(int d=0;d getTodayIncomeLists() { + return qcCheckTaskIncomeMapper.getTodayIncomeLists(); + } + } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java index 207d4d59..0d6572cd 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java @@ -204,7 +204,7 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService qcCheckTaskProduce.setCheckManName(""); qcCheckTaskProduce.setCheckManCode(""); /**qc_user_material取默认检查人**/ - List users = qcCheckTaskIncomeMapper.getCheckUsers(qcCheckTaskProduce.getOrderNo()); + List users = qcCheckTaskIncomeMapper.getUserByCheckType(qcCheckTaskProduce.getCheckType()); if(!CollectionUtils.isEmpty(users)){ for(QcUserMaterialDTO user:users){ user.setId(IdUtils.fastSimpleUUID()); 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 39756c02..cd6b6578 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 @@ -179,7 +179,7 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin qcCheckTaskWarehousing.setCheckManName(""); qcCheckTaskWarehousing.setCheckManCode(""); /**qc_user_material取默认检查人**/ - List users = qcCheckTaskIncomeMapper.getUserByMaterial(qcCheckTaskWarehousing.getMaterialCode()); + List users = qcCheckTaskIncomeMapper.getUserByCheckType(qcCheckTaskWarehousing.getCheckType()); if(CollectionUtils.isEmpty(users)){ QcUserMaterialDTO dto0 = new QcUserMaterialDTO(); dto0.setUserCode("mobile"); 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 edea6b29..05898b16 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 @@ -11,6 +11,7 @@ import com.op.common.core.utils.uuid.IdUtils; import com.op.common.security.utils.SecurityUtils; import com.op.quality.domain.*; import com.op.quality.mapper.QMSFileMapper; +import com.op.quality.mapper.QcCheckTaskDefectMapper; import com.op.quality.mapper.QcCheckTaskIncomeMapper; import com.op.quality.mapper.QcProCheckMapper; import com.op.quality.service.QcProCheckService; @@ -37,6 +38,9 @@ public class QcProCheckServiceImpl implements QcProCheckService { @Autowired private QcCheckTaskIncomeMapper qcCheckTaskIncomeMapper; + @Autowired + private QcCheckTaskDefectMapper qcCheckTaskDefectMapper; + @Autowired private QMSFileMapper qmsFileMapper; @@ -136,12 +140,21 @@ public class QcProCheckServiceImpl implements QcProCheckService { DynamicDataSourceContextHolder.push(qcCheckTaskDetail.getFactoryCode()); QcCheckTaskIncome dto = new QcCheckTaskIncome(); List qcCheckTaskDetails = qcCheckTaskIncomeMapper.getCkeckProjectList(qcCheckTaskDetail); + /**qc_check_task_defect**/ + Map defectMap = qcCheckTaskDefectMapper.getDefectMap(qcCheckTaskDetail); for (QcCheckTaskDetail qcd : qcCheckTaskDetails) { List files = qmsFileMapper.getBaseFileBatch(qcd.getRecordId()); if (CollectionUtils.isNotEmpty(files)) { qcd.setFiles(files); } + + QcCheckTaskDefect defectInfo = defectMap.get(qcd.getRecordId()); + if(defectInfo != null){ + qcd.setDefectCodes(defectInfo.getDefectCodes()); + qcd.setDefectNames(defectInfo.getDefectNames()); + qcd.setDefectQualitys(defectInfo.getDefectQualitys()); + } } dto.setQcCheckTaskDetails(qcCheckTaskDetails); diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDefectMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDefectMapper.xml index 6d34ac8d..e1b12908 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDefectMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDefectMapper.xml @@ -130,5 +130,33 @@ where belong_to = #{belongTo} order by defect_code + 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 c6c1bbfd..8be1b55d 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 @@ -337,26 +337,21 @@ #{recordId} - select user_code userCode, user_name userName - from qc_user_material where material_code = #{materialCode} + from qc_user_material + where material_code = #{checkType} and del_flag = '0' - + + diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcProCheckMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcProCheckMapper.xml index f4ef293d..65dd8aa2 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcProCheckMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcProCheckMapper.xml @@ -49,6 +49,7 @@ + @@ -252,7 +253,7 @@ select user_name from sys_user where user_name in - #{userCode} + #{code} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsSellOutTrayController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsSellOutTrayController.java index 52a91f9c..50d03058 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsSellOutTrayController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsSellOutTrayController.java @@ -107,7 +107,7 @@ public class WmsSellOutTrayController extends BaseController { /** - * 手持销售出库确认 + * 手持销售出库确认----不用 * * @param wmsSellOutTrays * @return @@ -118,7 +118,7 @@ public class WmsSellOutTrayController extends BaseController { String deliveryOrder = opsForValue.get("deliveryOrder"); String productCode = opsForValue.get("productCode"); WmsSellOutEmbryo wmsSellOutEmbryo = wmsSellOutEmbryoService.selectWmsSellOutEmbryoByOrderCodeAndProductCode(deliveryOrder, productCode); - wmsSellOutEmbryo.setOutQuantity(number); + // wmsSellOutEmbryo.setOutQuantity(number); wmsSellOutEmbryoService.updateWmsSellOutEmbryo(wmsSellOutEmbryo); return toAjax(wmsSellOutTrayService.handSellOut(wmsSellOutTrays)); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/WmsSellOutEmbryo.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/WmsSellOutEmbryo.java index 5dca6914..d3ebfd06 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/domain/WmsSellOutEmbryo.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/WmsSellOutEmbryo.java @@ -1,6 +1,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; @@ -104,16 +106,16 @@ public class WmsSellOutEmbryo extends BaseEntity { * 计划出库数量 */ @Excel(name = "计划出库数量") - private Long planQuantity; + private BigDecimal planQuantity; /** * 出库数量 */ @Excel(name = "出库数量") - private Long outQuantity; + private BigDecimal outQuantity; /** - * 出库状态 + * 出库状态--0进行,1完成 */ @Excel(name = "出库状态") private String status; @@ -207,6 +209,15 @@ public class WmsSellOutEmbryo extends BaseEntity { */ @Excel(name = "有效标记") private String activeFlag; + private List wmsProductPutTrayCodeList; + + public List getWmsProductPutTrayCodeList() { + return wmsProductPutTrayCodeList; + } + + public void setWmsProductPutTrayCodeList(List wmsProductPutTrayCodeList) { + this.wmsProductPutTrayCodeList = wmsProductPutTrayCodeList; + } public String getActiveFlag() { return activeFlag; @@ -328,19 +339,19 @@ public class WmsSellOutEmbryo extends BaseEntity { return lotNumber; } - public void setPlanQuantity(Long planQuantity) { + public void setPlanQuantity(BigDecimal planQuantity) { this.planQuantity = planQuantity; } - public Long getPlanQuantity() { + public BigDecimal getPlanQuantity() { return planQuantity; } - public void setOutQuantity(Long outQuantity) { + public void setOutQuantity(BigDecimal outQuantity) { this.outQuantity = outQuantity; } - public Long getOutQuantity() { + public BigDecimal getOutQuantity() { return outQuantity; } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsFpStorageNewsMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsFpStorageNewsMapper.java index 6eba004d..2ad37869 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsFpStorageNewsMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsFpStorageNewsMapper.java @@ -73,4 +73,6 @@ public interface WmsFpStorageNewsMapper { * @return */ public WmsFpStorageNews selectWmsFpStorageNewsByProductCodeAndWlCode(@Param("productCode") String productCode, @Param("wlCode") String wlCode); + + void updateWmsFpStorageNewsOut(WmsFpStorageNews wmsFpStorageNews); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsFpStorageNewsSnMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsFpStorageNewsSnMapper.java index cdf74704..ef4f5d3a 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsFpStorageNewsSnMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsFpStorageNewsSnMapper.java @@ -76,4 +76,6 @@ public interface WmsFpStorageNewsSnMapper { * @return */ public WmsFpStorageNewsSn selectWmsFpStorageNewsSnBySnAndProductCode(@Param("sn") String sn, @Param("productCode") String productCode); + + void updateWmsFpStorageNewsSnOut(WmsFpStorageNewsSn wmsFpStorageNewsSn); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsProductPutService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsProductPutService.java index f6ec26b5..80786812 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsProductPutService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsProductPutService.java @@ -88,7 +88,10 @@ public interface IWmsProductPutService { String deletSnCorrelationBarcode(WmsProductPutTrayCode wmsProductPutTrayCode); List selectFinishedProductSales(WmsSellOutEmbryo wmsSellOutEmbryo); - + /** + * 成品销售出库--确认接口 + * + */ String confirmFinishedProductSales(WmsSellOutEmbryo wmsSellOutEmbryo); /** * 成品销售出库----整托扫码 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 e9cb3815..7599edef 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 @@ -679,7 +679,56 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { @Override public String confirmFinishedProductSales(WmsSellOutEmbryo wmsSellOutEmbryo) { - return null; + String result1="出库成功"; + DynamicDataSourceContextHolder.push("ds_" + wmsSellOutEmbryo.getFactoryCode()); + List wmsProductPutTrayCodeList= wmsSellOutEmbryo.getWmsProductPutTrayCodeList(); + //成品销售出库--确认接口---修改出库单,--出库库存 + WmsSellOutEmbryo wmsSellOutEmbryo1 = wmsSellOutEmbryoMapper.selectWmsSellOutEmbryoById(wmsSellOutEmbryo.getId()); + Integer tem= wmsProductPutTrayCodeList.size(); + BigDecimal OutQuantity= wmsSellOutEmbryo1.getOutQuantity().add(new BigDecimal(tem)); + int result = wmsSellOutEmbryo1.getPlanQuantity().compareTo(OutQuantity); + WmsSellOutEmbryo wmsSellOutEmbryoUpdate=new WmsSellOutEmbryo(); + if (result == 0){//出库完 + wmsSellOutEmbryoUpdate.setStatus("1"); + }else { + wmsSellOutEmbryoUpdate.setStatus("0"); + } + wmsSellOutEmbryoUpdate.setId(wmsSellOutEmbryo.getId()); + wmsSellOutEmbryoUpdate.setOutQuantity(OutQuantity); + wmsSellOutEmbryoMapper.updateWmsSellOutEmbryo(wmsSellOutEmbryo); + //订单修改完成 + for(WmsProductPutTrayCode wmsProductPutTrayCode: wmsProductPutTrayCodeList){//库存修改 + //解除绑定 + wmsProductPutTrayCode.setRelatStatus("0"); + wmsProductPutTrayCodeMapper.updateWmsProductPutTrayCode(wmsProductPutTrayCode); + //改明细 + WmsFpStorageNewsSn wmsFpStorageNewsSn=new WmsFpStorageNewsSn(); + wmsFpStorageNewsSn.setSn(wmsProductPutTrayCode.getSn()); + wmsFpStorageNewsSn.setWlCode(wmsProductPutTrayCode.getWlCode()); + wmsFpStorageNewsSn.setActiveFlag("1"); + wmsFpStorageNewsSn.setProductCode(wmsSellOutEmbryo1.getProductCode()); + wmsFpStorageNewsSnMapper.updateWmsFpStorageNewsSnOut(wmsFpStorageNewsSn); + //判断如果托盘数据被出完,就关闭这个明细 + List wmsFpStorageNewsSns= wmsFpStorageNewsSnMapper.selectWmsFpStorageNewsSnList(wmsFpStorageNewsSn); + if (wmsFpStorageNewsSns.size()>0){ + WmsFpStorageNewsSn wmsFpStorageNewsSn1= wmsFpStorageNewsSns.get(0); + + BigDecimal ken= new BigDecimal(wmsFpStorageNewsSn1.getUserDefined2()); + int comparisonResult = ken.compareTo(wmsFpStorageNewsSn1.getAmount()); + if (comparisonResult == 0) { + // ken和amount相等 + wmsFpStorageNewsSn1.setActiveFlag("0"); + wmsFpStorageNewsSnMapper.updateWmsFpStorageNewsSn(wmsFpStorageNewsSn1); + } + } + //改主表 + WmsFpStorageNews wmsFpStorageNews=new WmsFpStorageNews(); + wmsFpStorageNews.setActiveFlag("1"); + wmsFpStorageNews.setWlCode(wmsProductPutTrayCode.getWlCode()); + wmsFpStorageNews.setProductCode(wmsSellOutEmbryo1.getProductCode()); + wmsFpStorageNewsMapper.updateWmsFpStorageNewsOut(wmsFpStorageNews); + } + return result1; } @Override diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/WmsFpStorageNewsMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/WmsFpStorageNewsMapper.xml index 94ff200a..745e4c1f 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/WmsFpStorageNewsMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/WmsFpStorageNewsMapper.xml @@ -290,4 +290,9 @@ #{storageId} + + update wms_fp_storage_news + set amount = COALESCE(amount, 0) - 1 + where product_code = #{productCode} and wl_code = #{wlCode} and active_flag='1' + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/WmsFpStorageNewsSnMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/WmsFpStorageNewsSnMapper.xml index 208e4704..9210d715 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/WmsFpStorageNewsSnMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/WmsFpStorageNewsSnMapper.xml @@ -248,4 +248,9 @@ #{storageId} + + update wms_fp_storage_news_sn + set user_defined2 = COALESCE(user_defined2, 0) + 1 + where sn=#{sn} and active_flag='1' +