diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java index 98b3f416d..a1cdefcdf 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java @@ -25,6 +25,9 @@ public interface RemoteSapService { @PostMapping("/sap/shopOrderSync") public R> shopOrderSync(@RequestBody SapShopOrderQuery sapProOrder); + @PostMapping("/sap/ZmesPurwqGet") + public R zmesPurwqGet(@RequestBody(required = false) Map mapList); + /**传递母订单号和母订单数量**/ @PostMapping("/sap/shopUpdateSync") public R shopUpdateSync(@RequestBody SapShopOrderQuery sapProOrder); diff --git a/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapWBDemand.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapWBDemand.java similarity index 96% rename from op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapWBDemand.java rename to op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapWBDemand.java index ed2784fa5..1ffd3e0e4 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapWBDemand.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapWBDemand.java @@ -1,4 +1,4 @@ -package com.op.sap.domain.vo; +package com.op.system.api.domain.sap; import java.util.Date; diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java index 8578ab5fd..bf398baa7 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java @@ -23,6 +23,11 @@ public class RemoteSapFallbackFactory implements FallbackFactory mapList) { + return R.fail("SAP服务获取白坯SAP订单失败:" + throwable.getMessage()); + } + @Override public R sapRouterSync(SapRouterQuery sapRouterQuery) { return R.fail("SAP服务同步工艺失败:" + throwable.getMessage()); diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesLineController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesLineController.java index fc4e81ad4..4b4f15f42 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesLineController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesLineController.java @@ -62,6 +62,9 @@ public class MesLineController extends BaseController { @PostMapping("/export") public void export(HttpServletResponse response, MesLine mesLine) { List list = mesLineService.selectMesLineList(mesLine); + for(MesLine mline:list){ + mline.setProductCode(mline.getProductCode().substring(7)); + } ExcelUtil util = new ExcelUtil(MesLine. class); util.exportExcel(response, list, "线体管理数据"); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProBPOrderWorkorderController.java b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProBPOrderWorkorderController.java index 9c7375a05..5a410b245 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProBPOrderWorkorderController.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProBPOrderWorkorderController.java @@ -1,5 +1,6 @@ package com.op.plan.controller; +import com.op.common.core.domain.R; import com.op.common.core.exception.ServiceException; import com.op.common.core.utils.poi.ExcelUtil; import com.op.common.core.web.controller.BaseController; @@ -8,6 +9,7 @@ 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.plan.domain.ProOrder; import com.op.plan.domain.ProOrderWorkorder; import com.op.plan.domain.dto.SplitOrderDTO; import com.op.plan.service.IProOrderWorkorderService; diff --git a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProWhiteOrderController.java b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProWhiteOrderController.java index e12935051..43a0d87aa 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProWhiteOrderController.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProWhiteOrderController.java @@ -164,4 +164,10 @@ public class ProWhiteOrderController { orderList.add(example); util.exportExcel(response, orderList, "订单基本信息"); } + + @Log(title = "同步白坯SAP订单", businessType = BusinessType.INSERT) + @PostMapping("/syncSAPbp") + public void syncSAPbp(@RequestBody ProOrder proOrder) { + proWhiteOrderService.syncSAPbp(proOrder); + } } 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 25a6fdbd5..6bdac342b 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 @@ -258,5 +258,7 @@ public interface ProOrderWorkorderMapper { List getWorkList(String workorderCode); List getBatchList(String workorderId); + + int bpAddBatch(@Param("list") List orders); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java index 0a88237c9..dc15c760d 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java @@ -3,6 +3,7 @@ package com.op.plan.service; import com.op.common.core.web.domain.AjaxResult; import com.op.plan.domain.ProLine; +import com.op.plan.domain.ProOrder; import com.op.plan.domain.ProOrderWorkorder; import com.op.plan.domain.ProOrderWorkorderBatch; import com.op.plan.domain.dto.SplitOrderDTO; diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/IProWhiteOrderService.java b/op-modules/op-plan/src/main/java/com/op/plan/service/IProWhiteOrderService.java index 8296e5e4f..a2368740d 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/IProWhiteOrderService.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/IProWhiteOrderService.java @@ -71,4 +71,7 @@ public interface IProWhiteOrderService { * @return */ AjaxResult getSplitInfo(ProOrder proOrder); + + + public void syncSAPbp(ProOrder proOrder); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java index d655c762a..70055aa01 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java @@ -25,10 +25,8 @@ import com.op.system.api.RemoteSapService; import com.op.system.api.domain.SysSapLog; import com.op.system.api.domain.dto.MesPrepareDTO; import com.op.system.api.domain.dto.MesPrepareDetailDTO; -import com.op.system.api.domain.sap.SapCloseOrderQuery; -import com.op.system.api.domain.sap.SapCreateOrder; -import com.op.system.api.domain.sap.SapMaterialPreparation; -import com.op.system.api.domain.sap.SapShopOrderQuery; +import com.op.system.api.domain.sap.*; +import com.op.system.api.model.SapProOrder; import net.bytebuddy.matcher.FilterableList; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang.StringUtils; @@ -72,6 +70,8 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { private RemoteSapService remoteSapService; @Autowired private ProWetMaterialPlanMapper proWetMaterialPlanMapper; + @Autowired + private ProWhiteOrderMapper proWhiteOrderMapper; /** * 查询生产工单 diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProWhiteOrderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProWhiteOrderServiceImpl.java index df5f1cf80..fdab09a1f 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProWhiteOrderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProWhiteOrderServiceImpl.java @@ -1,8 +1,10 @@ package com.op.plan.service.impl; import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.context.SecurityContextHolder; +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; @@ -11,10 +13,17 @@ import com.op.plan.domain.vo.CascaderDTO; import com.op.plan.domain.vo.SplitProWhiteOrderVo; import com.op.plan.mapper.*; import com.op.plan.service.IProWhiteOrderService; +import com.op.system.api.RemoteSapService; +import com.op.system.api.domain.quality.HRInfo; +import com.op.system.api.domain.sap.SapWBDemand; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -32,7 +41,7 @@ import static com.op.common.core.web.domain.AjaxResult.success; */ @Service public class ProWhiteOrderServiceImpl implements IProWhiteOrderService { - + protected Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private ProWhiteOrderMapper proWhiteOrderMapper; @Autowired @@ -47,7 +56,8 @@ public class ProWhiteOrderServiceImpl implements IProWhiteOrderService { private ProOrderWorkorderBatchMapper proOrderWorkorderBatchMapper; @Autowired private ProWetMaterialPlanDetailMapper proWetMaterialPlanDetailMapper; - + @Autowired + private RemoteSapService remoteSapService; /** * 查询白坯订单管理 * @@ -325,6 +335,70 @@ public class ProWhiteOrderServiceImpl implements IProWhiteOrderService { } } + /** + * 手动同步sap订单 + */ + @Override + @DS("#header.poolName") + public void syncSAPbp(ProOrder proOrder) { + + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String key = "#header.poolName"; + + + Map dataParams = new HashMap<>(); + dataParams.put("werks", request.getHeader(key.substring(8)).replace("ds_","")); + //dataParams.put("werks","1000"); + logger.info("白坯手动订单同步:【参数】" + JSONObject.toJSONString(dataParams)); + //取>=20230923的sap数据 + R rSapProOrder = remoteSapService.zmesPurwqGet(dataParams);//sap只能同步指定日期的数据 + + List sapWBDemandList = JSONArray.parseArray(JSONObject.toJSONString(rSapProOrder.getData()), SapWBDemand.class); + if (CollectionUtils.isEmpty(sapWBDemandList)) { + System.out.println("无最新的白坯订单"); + } else { + logger.info("白坯手动订单同步:【结果】" + JSONObject.toJSONString(sapWBDemandList)); + syncSAPbpFunc(sapWBDemandList, "bpsap"); + } + + } + @Transactional(rollbackFor = Exception.class) + public String syncSAPbpFunc(List newOrders,String syncUser){ + List orders = new ArrayList<>(); + ProOrder proOrder = null; + String bpDD = "DD" + DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate()); + int m=1; + Date nowDate = DateUtils.getNowDate(); + for (SapWBDemand sapProOrder:newOrders) { + if(StringUtils.isNotBlank(sapProOrder.getMatnr())&&StringUtils.isNotBlank(sapProOrder.getMaktx())){ + //工单生产后整个订单就被锁定//订单存在就更新,不存在就插入 + proOrder = new ProOrder(); + proOrder.setPlanFactoryCode(sapProOrder.getWerks()); + proOrder.setMaterialCode(sapProOrder.getMatnr()); + proOrder.setMaterialName(sapProOrder.getMaktx()); + double menge = sapProOrder.getMenge(); + proOrder.setQuantity((long)menge); + proOrder.setUnit(sapProOrder.getMeins()); + proOrder.setPlanProDate(sapProOrder.getBedat()); + proOrder.setPlanComplete(sapProOrder.getBedat()); + proOrder.setSyncUser(syncUser); + proOrder.setCreateBy(syncUser); + proOrder.setCreateTime(nowDate); + proOrder.setId(IdUtils.fastSimpleUUID()); + proOrder.setStatus("o0"); + proOrder.setOrderType("white"); + proOrder.setProdType("white"); + + int liushuiNum = proWhiteOrderMapper.getTodayMaxNum(proOrder)+(m++); + String liushuiStr = String.format("%04d", liushuiNum); + proOrder.setOrderCode(bpDD + liushuiStr); + orders.add(proOrder); + } + } + int snum = proOrderWorkorderMapper.bpAddBatch(orders); + logger.info("成功条数:"+snum); + return "成功条数:"+snum; + } public static void main(String args[]) { String formatted = String.format("%04d", 7); System.out.println(formatted); 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 ee93c1ab2..3f8b83cd6 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 @@ -916,6 +916,24 @@ ) + + INSERT INTO pro_order ( + id,plan_factory_code,order_type,order_code, + prod_code,prod_desc, + quantity,unit, + plan_pro_date, plan_complete, + create_by,create_time + )VALUES + + ( + #{d.id},#{d.planFactoryCode},#{d.orderType},#{d.orderCode}, + #{d.materialCode},#{d.materialName}, + #{d.quantity},#{d.unit}, + #{d.planProDate},#{d.planComplete}, + #{d.createBy},#{d.createTime} + ) + + update pro_order_workorder 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 93435c3cb..77042c53c 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 @@ -509,4 +509,16 @@ public class QcCheckTaskIncomeController extends BaseController { } return success(); } + + /**应用最新检验方案,重新生成检验任务**/ + @PostMapping(value = "/changeTaskDetail") + public AjaxResult changeTaskDetail(@RequestBody QcCheckTaskIncome task) { + QcCheckTaskIncome taskInfo = qcCheckTaskIncomeService.getTaskInfoByRecordId(task.getRecordId()); + if(taskInfo.getCheckStatus().equals("2")){ + return error("任务已经检验无法重新生成检验任务!"); + } + task.setMaterialCode(taskInfo.getMaterialCode()); + task.setCheckType(taskInfo.getCheckType()); + return toAjax(qcCheckTaskIncomeService.changeTaskDetail(task)); + } } 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 322566ac5..b63458d1b 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 @@ -2,6 +2,7 @@ package com.op.quality.controller; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletResponse; @@ -9,8 +10,10 @@ import com.alibaba.fastjson2.JSONObject; import com.op.common.core.domain.R; import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.StringUtils; +import com.op.quality.domain.InventoryExportDTO; import com.op.quality.domain.OACheckTaskDTO; import com.op.quality.domain.QcCheckTaskIncome; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.GetMapping; @@ -71,8 +74,15 @@ public class QcCheckTaskInventoryController extends BaseController { @Log(title = "库存检验任务", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, QcCheckTaskInventory qcCheckTaskInventory) { - List list = qcCheckTaskInventoryService.selectQcCheckTaskInventoryList(qcCheckTaskInventory); - ExcelUtil util = new ExcelUtil(QcCheckTaskInventory.class); + List list0 = qcCheckTaskInventoryService.selectQcCheckTaskInventoryList(qcCheckTaskInventory); + + List list = new ArrayList<>(); + for(QcCheckTaskInventory dto0:list0){ + InventoryExportDTO dto = new InventoryExportDTO(); + BeanUtils.copyProperties(dto0,dto); + list.add(dto); + } + ExcelUtil util = new ExcelUtil(InventoryExportDTO.class); util.exportExcel(response, list, "库存检验任务数据"); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcDefectTypeClassController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcDefectTypeClassController.java index f2c25f75d..d0683f894 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcDefectTypeClassController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcDefectTypeClassController.java @@ -39,8 +39,8 @@ public class QcDefectTypeClassController extends BaseController { /** * 查询故障类型-缺陷描述分类列表 */ -@RequiresPermissions("system:class:list") -@GetMapping("/list") + //@RequiresPermissions("system:class:list") + @GetMapping("/list") public TableDataInfo list(QcDefectTypeClass qcDefectTypeClass) { startPage(); List list = qcDefectTypeClassService.selectQcDefectTypeClassList(qcDefectTypeClass); @@ -50,7 +50,7 @@ public class QcDefectTypeClassController extends BaseController { /** * 导出故障类型-缺陷描述分类列表 */ - @RequiresPermissions("system:class:export") + //@RequiresPermissions("system:class:export") @Log(title = "故障类型-缺陷描述分类", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, QcDefectTypeClass qcDefectTypeClass) { @@ -62,7 +62,7 @@ public class QcDefectTypeClassController extends BaseController { /** * 获取故障类型-缺陷描述分类详细信息 */ - @RequiresPermissions("system:class:query") + //@RequiresPermissions("system:class:query") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") String id) { return success(qcDefectTypeClassService.selectQcDefectTypeClassById(id)); @@ -71,7 +71,7 @@ public class QcDefectTypeClassController extends BaseController { /** * 新增故障类型-缺陷描述分类 */ - @RequiresPermissions("system:class:add") + //@RequiresPermissions("system:class:add") @Log(title = "故障类型-缺陷描述分类", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody QcDefectTypeClass qcDefectTypeClass) { @@ -81,7 +81,7 @@ public class QcDefectTypeClassController extends BaseController { /** * 修改故障类型-缺陷描述分类 */ - @RequiresPermissions("system:class:edit") + //@RequiresPermissions("system:class:edit") @Log(title = "故障类型-缺陷描述分类", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody QcDefectTypeClass qcDefectTypeClass) { @@ -91,7 +91,7 @@ public class QcDefectTypeClassController extends BaseController { /** * 删除故障类型-缺陷描述分类 */ - @RequiresPermissions("system:class:remove") + //@RequiresPermissions("system:class:remove") @Log(title = "故障类型-缺陷描述分类", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java index 8cd962c9c..e20eefc4d 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java @@ -613,7 +613,7 @@ public class QcStaticTableController extends BaseController { //表格结构数据 ArrayList excelCols = new ArrayList<>(); excelCols.add(new ExcelCol("时间", "timeCol", 15)); - excelCols.add(new ExcelCol("抽检数", "sampleQuality", 10)); + excelCols.add(new ExcelCol("抽样数", "sampleQuality", 10)); for (int n = 0; n < title2Cols.size(); n++) { excelCols.add(new ExcelCol(title2Cols.get(n), "col" + (n), 15)); @@ -649,7 +649,7 @@ public class QcStaticTableController extends BaseController { List list = qcStaticTableService.getTableHzDataSC(qcStaticTable); List title2Cols = titledto.getColumns1(); //String titleRow1 = String.join(",", title2Cols); - String titleRow1 = "巡检分析报表"; + String titleRow1 = "来料统计分析"; //表格结构数据 ArrayList excelCols = new ArrayList<>(); excelCols.add(new ExcelCol("时间", "timeCol", 15)); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/InventoryExportDTO.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/InventoryExportDTO.java new file mode 100644 index 000000000..8c8e1b413 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/InventoryExportDTO.java @@ -0,0 +1,271 @@ +package com.op.quality.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; +import java.util.List; + +/** + * 库存检验任务对象 qc_check_task_inventory + * + * @author Open Platform + * @date 2024-01-12 + */ +public class InventoryExportDTO extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * id + */ + private String recordId; + + /** + * 检验任务编号 + */ + @Excel(name = "检验任务编号") + private String checkNo; + + /** + * 订单号 + */ + @Excel(name = "订单号") + private String orderNo; + /** + * 物料号 + */ + @Excel(name = "物料号") + private String materialCode; + + /** + * 物料名称 + */ + @Excel(name = "物料名称") + private String materialName; + + /** + * 收货数量 + */ + @Excel(name = "收货数量") + private BigDecimal quality; + + /** + * 单位 + */ + //@Excel(name = "单位") + private String unit; + + /** + * 供应商编码 + */ + @Excel(name = "仓库编码") + private String supplierCode; + + /** + * 供应商名称 + */ + @Excel(name = "仓库名称") + private String supplierName; + + /** + * 来料时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "入库时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date incomeTime; + + /** + * 检测状态0待检测1检测中2检测完成 + */ + @Excel(name = "检测状态", readConverterExp = "0=待检测,1=检测中,2=检测完成") + private String checkStatus; + + /** + * 检测人工号 + */ + @Excel(name = "检测人工号") + private String checkManCode; + + /** + * 检测人姓名 + */ + @Excel(name = "检测人姓名") + private String checkManName; + + /** + * 检验时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "检验时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date checkTime; + + /** + * 检验结果Y合格 + */ + @Excel(name = "检验结果", readConverterExp = "Y=合格,N=不合格") + private String checkResult; + + + @Excel(name = "检验节点", readConverterExp = "checkTypeCC=库存检验") + private String checkType; + + /** + * 不合格数量 + */ + @Excel(name = "不合格数量") + private BigDecimal noOkQuality; + + /** + * 抽样数量 + */ + @Excel(name = "抽样数量") + private BigDecimal sampleQuality; + + public String getRecordId() { + return recordId; + } + + public void setRecordId(String recordId) { + this.recordId = recordId; + } + + public String getCheckNo() { + return checkNo; + } + + public void setCheckNo(String checkNo) { + this.checkNo = checkNo; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public BigDecimal getSampleQuality() { + return sampleQuality; + } + + public void setSampleQuality(BigDecimal sampleQuality) { + this.sampleQuality = sampleQuality; + } + + public String getMaterialCode() { + return materialCode; + } + + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getMaterialName() { + return materialName; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + public BigDecimal getQuality() { + return quality; + } + + public void setQuality(BigDecimal quality) { + this.quality = quality; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + public String getSupplierCode() { + return supplierCode; + } + + public void setSupplierCode(String supplierCode) { + this.supplierCode = supplierCode; + } + + public String getSupplierName() { + return supplierName; + } + + public void setSupplierName(String supplierName) { + this.supplierName = supplierName; + } + + public Date getIncomeTime() { + return incomeTime; + } + + public void setIncomeTime(Date incomeTime) { + this.incomeTime = incomeTime; + } + + public String getCheckStatus() { + return checkStatus; + } + + public void setCheckStatus(String checkStatus) { + this.checkStatus = checkStatus; + } + + public String getCheckManCode() { + return checkManCode; + } + + public void setCheckManCode(String checkManCode) { + this.checkManCode = checkManCode; + } + + public String getCheckManName() { + return checkManName; + } + + public void setCheckManName(String checkManName) { + this.checkManName = checkManName; + } + + public Date getCheckTime() { + return checkTime; + } + + public void setCheckTime(Date checkTime) { + this.checkTime = checkTime; + } + + public String getCheckResult() { + return checkResult; + } + + public void setCheckResult(String checkResult) { + this.checkResult = checkResult; + } + + public String getCheckType() { + return checkType; + } + + public void setCheckType(String checkType) { + this.checkType = checkType; + } + + public BigDecimal getNoOkQuality() { + return noOkQuality; + } + + public void setNoOkQuality(BigDecimal noOkQuality) { + this.noOkQuality = noOkQuality; + } +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskInventory.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskInventory.java index 8668ec6c0..64184c0b4 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskInventory.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskInventory.java @@ -39,9 +39,10 @@ public class QcCheckTaskInventory extends BaseEntity { /** * 订单号 */ - @Excel(name = "订单号") + @Excel(name = "工单号") private String orderNo; - + @Excel(name = "订单号") + private String workorderCodeSap; /** * 物料号 */ @@ -525,6 +526,14 @@ public class QcCheckTaskInventory extends BaseEntity { this.serialNumber = serialNumber; } + public String getWorkorderCodeSap() { + return workorderCodeSap; + } + + public void setWorkorderCodeSap(String workorderCodeSap) { + this.workorderCodeSap = workorderCodeSap; + } + @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/mapper/QcCheckTaskIncomeMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java index c58ce192a..3971ab337 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 @@ -159,4 +159,6 @@ public interface QcCheckTaskIncomeMapper { void deleteTaskDetail(String deleteIds); void deleteTaskUser(String deleteIds); + + QcCheckTaskIncome getTaskInfoByRecordId(String recordId); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTypeProjectMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTypeProjectMapper.java index f1d302eb1..8effb62f1 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTypeProjectMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTypeProjectMapper.java @@ -84,4 +84,6 @@ public interface QcCheckTypeProjectMapper { QcMaterialGroupDetail selectExist(QcMaterialGroupDetail materialGroupDetail); + int clearTaskDetail(String recordId); + int clearTaskDefect(String recordId); } 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 1502f8f0d..fae5392f3 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 @@ -113,4 +113,8 @@ public interface IQcCheckTaskIncomeService { int commitCheckResultsCg(QcCheckTaskIncome qcCheckTaskIncome); int togetherTask(QcCheckTaskIncome income); + + QcCheckTaskIncome getTaskInfoByRecordId(String recordId); + + int changeTaskDetail(QcCheckTaskIncome task); } 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 c3781f90f..ae8cbdc14 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 @@ -26,6 +26,7 @@ import com.op.system.api.domain.SysNoticeGroup; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.dto.WechartDTO; import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO; +import com.op.system.api.domain.quality.QcMaterialGroupDetailDTO; import com.op.system.api.domain.quality.QcUserMaterialDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -870,6 +871,85 @@ public class QcCheckTaskIncomeServiceImpl implements return m; } + @Override + @DS("#header.poolName") + public QcCheckTaskIncome getTaskInfoByRecordId(String recordId) { + return qcCheckTaskIncomeMapper.getTaskInfoByRecordId(recordId); + } + + @Override + @DS("#header.poolName") + public int changeTaskDetail(QcCheckTaskIncome task) { + + //清理检验明细项目 + int dnum1 = qcCheckTypeProjectMapper.clearTaskDetail(task.getRecordId()); + System.out.println("删除1:"+dnum1); + int dnum2 = qcCheckTypeProjectMapper.clearTaskDefect(task.getRecordId()); + System.out.println("删除2:"+dnum2); + + /**取检测项**/ + QcCheckTypeProject qctp= new QcCheckTypeProject(); + qctp.setTypeId(task.getCheckType());//检验节点 + qctp.setMaterialCode(task.getMaterialCode());//特性 + /**qc_check_type_project**///个性 + List items = qcCheckTypeProjectMapper.getTPByTypeMaterial(qctp); + /**qc_material_group_detail**/ + QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(task.getMaterialCode()); + //共性 + if(group == null){//默认 + if(task.getCheckType().equals("checkTypeLL")){ + group = new QcMaterialGroupDetail(); + QcProjectType initGroup = qcCheckTypeProjectMapper.getProductGroup(task.getMaterialCode()); + if(initGroup != null){ + group.setGroupId(initGroup.getGroupId()); + }else{ + return 0;//没有找到检测项目 + } + }else if(task.getCheckType().equals("checkTypeSCXJ") + ||task.getCheckType().equals("checkTypeSC") + ||task.getCheckType().equals("checkTypeCP")){ + group = new QcMaterialGroupDetail(); + group.setGroupId("3dc0655fea3449c59c76a01cc5b91565");//成品蚊香物料组 + }else if(task.getCheckType().equals("checkTypeCC")){ + group = new QcMaterialGroupDetail(); + QcProjectType initGroup = qcCheckTypeProjectMapper.getProductGroup(task.getMaterialCode()); + if(initGroup != null){//包材共性 + group.setGroupId(initGroup.getGroupId()); + }else{//成品共性 + group.setGroupId("3dc0655fea3449c59c76a01cc5b91565"); + } + } + } + List itemsGG = new ArrayList<>(); + if(StringUtils.isNotBlank(group.getGroupId())){ + qctp.setGroupId(group.getGroupId()); + itemsGG = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp); + } + items.addAll(itemsGG); + + /**qc_check_task_detail**/ + if(CollectionUtils.isEmpty(items)){ + logger.info("检验任务创建参数缺失:"+task.getMaterialCode()); + return 0;//没有找到检测项目 + } + /**qc_check_task_detail**/ + Date nowDate = DateUtils.getNowDate(); + String createBy = SecurityUtils.getUsername(); + //获取当前所选工厂 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String key = "#header.poolName"; + String factoryCode = request.getHeader(key.substring(8)).replace("ds_",""); + for(QcCheckTaskDetail item:items){ + item.setRecordId(IdUtils.fastSimpleUUID()); + item.setBelongTo(task.getRecordId()); + item.setCreateTime(nowDate); + item.setCreateBy(createBy); + item.setFactoryCode(factoryCode); + item.setStatus("Y"); + } + return qcCheckTaskDetailMapper.addBatch(items); + } + @Override //@Transactional(rollbackFor = Exception.class) public int commitCheckResults(QcCheckTaskIncome qcCheckTaskIncome) { diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java index c1484de14..84038bf86 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java @@ -1125,9 +1125,12 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { BigDecimal noOkRate = new BigDecimal(sampl.getNoOkQuality()).multiply(new BigDecimal("100.00")) .divide(new BigDecimal(sampl.getSampleQuality()),2, BigDecimal.ROUND_HALF_UP); colMap.put("noOkRate",noOkRate); + colMap.put("noOkQua",sampl.getNoOkQuality()); + }else{ colMap.put("sampleQuality","0"); colMap.put("noOkRate","0"); + colMap.put("noOkQua","0"); } //不良数(不折算) Map noOks = qcStaticTableMapper.getNoOkPCNum(qcStaticTable); 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 9f58eaa03..a9b77507c 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 @@ -861,6 +861,14 @@ where qct.record_id in(${ids}) order by qct.check_no desc + diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskInventoryMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskInventoryMapper.xml index fc6fc6d98..11b2b9bed 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskInventoryMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskInventoryMapper.xml @@ -41,6 +41,8 @@ + + @@ -54,7 +56,8 @@ @@ -301,7 +310,9 @@ t0.supplierName, t0.check_Type from (--> - select t.order_no orderNo, + select + SUBSTRING(pow.workorder_code_sap,4,10) workorderCodeSap, + t.order_no orderNo, t.material_code materialCode, t.material_name materialName, t.quality quality, @@ -317,14 +328,14 @@ left join ( select order_no,material_code,max(create_time) create_time from qc_check_task where check_type='checkTypeCC' and del_flag = '0' GROUP BY order_no,material_code - ) qct on qct.order_no = t.order_no - and t.material_code = qct.material_code - where bp.warehouse_cycle is not null and t.check_type in('checkTypeLL','checkTypeCP') and t.del_flag = '0' + ) qct on qct.order_no = t.order_no and t.material_code = qct.material_code + left join pro_order_workorder pow on pow.workorder_code = qct.order_no + where bp.warehouse_cycle is not null and t.check_type in('checkTypeLL','checkTypeCP') and t.del_flag = '0' and pow.del_flag = '0' and t.material_code like concat('%',#{materialCode}, '%') and t.material_name like concat('%',#{materialName}, '%') and t.order_no like concat('%',#{orderNo}, '%') - - order by t.income_time desc,t.order_no,t.material_code + and pow.workorder_code_sap like concat('%',#{workorderCodeSap},'%') + order by t.income_time desc,t.order_no,t.material_code 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 82bc7ed1f..5ce06a856 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 @@ -271,6 +271,12 @@ #{id} + + delete from qc_check_task_detail where belong_to = #{recordId} + + + delete from qc_check_task_defect where belong_to = #{recordId} + @@ -1020,6 +1021,7 @@ left join base_equipment be on be.equipment_code = qct.check_loc where qct.check_type = 'checkTypeSCXJ' and qct.del_flag = '0' and qct.check_status = '2' and be.del_flag = '0' and pow.del_flag = '0' and qct.check_no like concat('%',#{orderNo},'%') + and pow.workorder_code_sap like concat('%',#{workorderCodeSap},'%') and qct.material_code like concat('%',#{materialCode},'%') and qct.income_batch_no like concat('%',#{incomeBatchNo},'%') and CONVERT(varchar(10),pow.product_date, 120) = #{incomeTimeStr} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapItemSyncImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapItemSyncImpl.java index 83d9b05f8..3a8376778 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapItemSyncImpl.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapItemSyncImpl.java @@ -10,7 +10,7 @@ import com.op.common.core.utils.StringUtils; import com.op.common.core.utils.bean.BeanValidators; import com.op.common.core.utils.uuid.IdUtils; import com.op.common.security.utils.SecurityUtils; -import com.op.sap.domain.vo.SapWBDemand; +import com.op.system.api.domain.sap.SapWBDemand; import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO; import com.op.system.api.domain.sap.SapBackflushMPQuery; import com.op.sap.domain.vo.SapItemQuery; @@ -25,7 +25,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Validator; import java.math.BigDecimal; diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/BpRawMaterialInController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/BpRawMaterialInController.java index 3a1ce6081..72b576a00 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/BpRawMaterialInController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/BpRawMaterialInController.java @@ -2,6 +2,8 @@ package com.op.wms.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; + +import com.op.common.security.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; @@ -37,7 +39,7 @@ public class BpRawMaterialInController extends BaseController /** * 查询白坯原材料入库列表 */ - @PreAuthorize("@ss.hasPermi('wms:raw:list')") + @RequiresPermissions("wms:raw:list") @GetMapping("/list") public TableDataInfo list(BpRawMaterialIn bpRawMaterialIn) { @@ -49,7 +51,7 @@ public class BpRawMaterialInController extends BaseController /** * 导出白坯原材料入库列表 */ - @PreAuthorize("@ss.hasPermi('wms:raw:export')") + @RequiresPermissions("wms:raw:export") @Log(title = "白坯原材料入库", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, BpRawMaterialIn bpRawMaterialIn) @@ -62,7 +64,7 @@ public class BpRawMaterialInController extends BaseController /** * 获取白坯原材料入库详细信息 */ - @PreAuthorize("@ss.hasPermi('wms:raw:query')") + @RequiresPermissions("wms:raw:query") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") String id) { @@ -72,7 +74,7 @@ public class BpRawMaterialInController extends BaseController /** * 新增白坯原材料入库 */ - @PreAuthorize("@ss.hasPermi('wms:raw:add')") + @RequiresPermissions("wms:raw:add") @Log(title = "白坯原材料入库", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody BpRawMaterialIn bpRawMaterialIn) @@ -83,7 +85,7 @@ public class BpRawMaterialInController extends BaseController /** * 修改白坯原材料入库 */ - @PreAuthorize("@ss.hasPermi('wms:raw:edit')") + @RequiresPermissions("wms:raw:edit") @Log(title = "白坯原材料入库", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody BpRawMaterialIn bpRawMaterialIn) @@ -94,7 +96,7 @@ public class BpRawMaterialInController extends BaseController /** * 删除白坯原材料入库 */ - @PreAuthorize("@ss.hasPermi('wms:raw:remove')") + @RequiresPermissions("wms:raw:remove") @Log(title = "白坯原材料入库", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/BpRawMaterialInDetailController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/BpRawMaterialInDetailController.java index a624f8df4..e038b8236 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/BpRawMaterialInDetailController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/BpRawMaterialInDetailController.java @@ -4,6 +4,7 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.microsoft.windowsazure.exception.ServiceException; +import com.op.common.security.annotation.RequiresPermissions; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -39,7 +40,7 @@ public class BpRawMaterialInDetailController extends BaseController /** * 查询白坯原材料入库明细列表 */ - @PreAuthorize("@ss.hasPermi('wms:detail:list')") + @RequiresPermissions("wms:detail:list") @GetMapping("/list") public TableDataInfo list(BpRawMaterialInDetail bpRawMaterialInDetail) { @@ -51,7 +52,7 @@ public class BpRawMaterialInDetailController extends BaseController /** * 导出白坯原材料入库明细列表 */ - @PreAuthorize("@ss.hasPermi('wms:detail:export')") + @RequiresPermissions("wms:detail:export") @Log(title = "白坯原材料入库明细", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, BpRawMaterialInDetail bpRawMaterialInDetail) @@ -64,7 +65,7 @@ public class BpRawMaterialInDetailController extends BaseController /** * 获取白坯原材料入库明细详细信息 */ - @PreAuthorize("@ss.hasPermi('wms:detail:query')") + @RequiresPermissions("wms:detail:query") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") String id) { @@ -74,7 +75,7 @@ public class BpRawMaterialInDetailController extends BaseController /** * 新增白坯原材料入库明细 */ - @PreAuthorize("@ss.hasPermi('wms:detail:add')") + @RequiresPermissions("wms:detail:add") @Log(title = "白坯原材料入库明细", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody BpRawMaterialInDetail bpRawMaterialInDetail) throws ServiceException { @@ -84,7 +85,7 @@ public class BpRawMaterialInDetailController extends BaseController /** * 修改白坯原材料入库明细 */ - @PreAuthorize("@ss.hasPermi('wms:detail:edit')") + @RequiresPermissions("wms:detail:edit") @Log(title = "白坯原材料入库明细", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody BpRawMaterialInDetail bpRawMaterialInDetail) @@ -95,11 +96,12 @@ public class BpRawMaterialInDetailController extends BaseController /** * 删除白坯原材料入库明细 */ - @PreAuthorize("@ss.hasPermi('wms:detail:remove')") + @RequiresPermissions("wms:detail:remove") @Log(title = "白坯原材料入库明细", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { - return toAjax(bpRawMaterialInDetailService.deleteBpRawMaterialInDetailByIds(ids)); + AjaxResult result= bpRawMaterialInDetailService.deleteBpRawMaterialInDetailByIds(ids); + return result; } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSInterfaceContorller.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSInterfaceContorller.java index 989f1c7e1..c6725e7f8 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSInterfaceContorller.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSInterfaceContorller.java @@ -1,17 +1,25 @@ package com.op.wms.controller; import com.op.common.core.utils.StringUtils; +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.security.annotation.RequiresPermissions; +import com.op.wms.domain.BaseTeamT; +import com.op.wms.domain.ProOrderWorkorder; import com.op.wms.domain.WmsToWCSDTO; import com.op.wms.service.IWmsToWCSInterfaceService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +import static com.op.common.core.utils.PageUtils.startPage; +import static com.op.common.core.web.domain.AjaxResult.success; @RestController @RequestMapping("/WmsToWCSInterface") -public class WmsToWCSInterfaceContorller { +public class WmsToWCSInterfaceContorller extends BaseController { @Autowired private IWmsToWCSInterfaceService wmsToWCSInterfaceService; @@ -111,5 +119,25 @@ public class WmsToWCSInterfaceContorller { return wmsToWCSInterfaceService.blankDesignatedPalletOutbound(wcsdto); } + /** + * 查询生产工单列表 + */ + + @GetMapping("/listNe") + public TableDataInfo listNe(ProOrderWorkorder proOrderWorkorder) { + startPage(); + List list = wmsToWCSInterfaceService.selectProOrderWorkorderList(proOrderWorkorder); + return getDataTable(list); + } + /** + * 通过子工单code查询并返回所有级联工单 + * + * @param code + * @return + */ + @GetMapping("/getWorkOrders/{code}") + public AjaxResult getWorkOrders(@PathVariable("code") String code) { + return wmsToWCSInterfaceService.getWorkOrders(code); + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/CascaderDTO.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/CascaderDTO.java new file mode 100644 index 000000000..5dfffff08 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/CascaderDTO.java @@ -0,0 +1,73 @@ +package com.op.wms.domain; + +import java.io.Serializable; +import java.util.List; + +/** + * Treeselect树结构实体类 + * + * @author OP + */ +public class CascaderDTO implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 节点ID + */ + private Long id; + + private String value; + + /** + * 节点名称 + */ + private String label; + + /** + * 子节点 + */ + private List children; +// +// public TreeSelect() { +// +// } +// +// public TreeSelect(SysDept dept) { +// this.id = dept.getDeptId(); +// this.label = dept.getDeptName(); +// this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); +// } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/ProOrderWorkorder.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/ProOrderWorkorder.java index fd46a2b83..4e3bf063e 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/domain/ProOrderWorkorder.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/ProOrderWorkorder.java @@ -34,6 +34,8 @@ public class ProOrderWorkorder extends TreeEntity { */ @Excel(name = "sap工单编码") private String workorderCodeSap; + private String carNum; + private String sortNo; public String getWorkorderCodeSap() { return workorderCodeSap; @@ -109,6 +111,17 @@ public class ProOrderWorkorder extends TreeEntity { @Excel(name = "工艺编码") private String routeCode; + // 工艺名称 + private String routeName; + + public String getRouteName() { + return routeName; + } + + public void setRouteName(String routeName) { + this.routeName = routeName; + } + /** * 产线编码 */ @@ -172,13 +185,23 @@ public class ProOrderWorkorder extends TreeEntity { */ @Excel(name = "预留字段3") private String attr3; + private String atrr2; + + public String getAtrr2() { + return atrr2; + } + + public void setAtrr2(String atrr2) { + this.atrr2 = atrr2; + } /** * 预留字段4 */ @Excel(name = "预留字段4") private String attr4; - + private String sapName; + private String sapCode; /** * 产品类型 */ @@ -190,6 +213,71 @@ public class ProOrderWorkorder extends TreeEntity { private String attribute2; private String attribute3; private String waCode; + private String statusArray; + + public String getStatusArray() { + return statusArray; + } + + public void setStatusArray(String statusArray) { + this.statusArray = statusArray; + } + + public String getCarNum() { + return carNum; + } + + public void setCarNum(String carNum) { + this.carNum = carNum; + } + + public String getSortNo() { + return sortNo; + } + + public void setSortNo(String sortNo) { + this.sortNo = sortNo; + } + + public String getSapName() { + return sapName; + } + + public void setSapName(String sapName) { + this.sapName = sapName; + } + + public String getSapCode() { + return sapCode; + } + + public void setSapCode(String sapCode) { + this.sapCode = sapCode; + } + + public String getPworkorderCodeSap() { + return pworkorderCodeSap; + } + + public void setPworkorderCodeSap(String pworkorderCodeSap) { + this.pworkorderCodeSap = pworkorderCodeSap; + } + + public String getPproductCode() { + return pproductCode; + } + + public void setPproductCode(String pproductCode) { + this.pproductCode = pproductCode; + } + + public String getPproductName() { + return pproductName; + } + + public void setPproductName(String pproductName) { + this.pproductName = pproductName; + } public String getWaCode() { return waCode; @@ -285,7 +373,9 @@ public class ProOrderWorkorder extends TreeEntity { // 物料id(湿料计划模块使用) private Integer materialId; - + private String pworkorderCodeSap; + private String pproductCode; + private String pproductName; // 物料编码(湿料计划模块使用) private String materialCode; diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/ProWetMaterialPlanDetail.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/ProWetMaterialPlanDetail.java new file mode 100644 index 000000000..15afae0f1 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/ProWetMaterialPlanDetail.java @@ -0,0 +1,329 @@ +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.util.Date; + +/** + * 配料计划明细对象 pro_wet_material_plan_detail + * + * @author Open Platform + * @date 2023-07-27 + */ +public class ProWetMaterialPlanDetail extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * ID + */ + private String id; + + /** + * 计划工厂编码 + */ + @Excel(name = "计划工厂编码") + private String factoryCode; + + /** + * 配料计划id + */ + @Excel(name = "配料计划id") + private String wetMaterialPlanId; + + /** + * 工单id + */ + @Excel(name = "工单id") + private String workorderId; + + /** + * + */ + private String atrr1; + + /** + * + */ + private String atrr2; + + /** + * + */ + private String atrr3; + + /** + * 1接料完成0未接料 + */ + @Excel(name = "是否接料", readConverterExp = "N=未接料,Y=已接料") + private String status; + + /** + * 料罐id + */ + private String bucketId; + + /** + * 料罐编码 + */ + @Excel(name = "料罐编码") + private String bucketCode; + + /** + * 物料编码 + */ + private String materialCode; + + /** + * 物料id + */ + private String materialId; + + /** + * 物料名称 + */ + @Excel(name = "物料名称") + private String materialName; + + /** + * 产品名称 + */ + @Excel(name = "产品名称") + private String productName; + + /** + * 班次id + */ + private Long shiftId; + + /** + * 班次编码 + */ + private String shiftCode; + + /** + * 班次简称 + */ + @Excel(name = "班次简称") + private String shiftDesc; + + /** + * 计划日期 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "计划日期", width = 30, dateFormat = "yyyy-MM-dd", sort = 1) + private Date planTime; + + // 工单编码 + private String workorderCode; + + + // 工单日期 + @JsonFormat(pattern = "yyyy-MM-dd") + private Date productDate; + + // 料罐名称 + private String bucketName; + + public String getBucketName() { + return bucketName; + } + + public void setBucketName(String bucketName) { + this.bucketName = bucketName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFactoryCode() { + return factoryCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getWetMaterialPlanId() { + return wetMaterialPlanId; + } + + public void setWetMaterialPlanId(String wetMaterialPlanId) { + this.wetMaterialPlanId = wetMaterialPlanId; + } + + public String getWorkorderId() { + return workorderId; + } + + public void setWorkorderId(String workorderId) { + this.workorderId = workorderId; + } + + public String getAtrr1() { + return atrr1; + } + + public void setAtrr1(String atrr1) { + this.atrr1 = atrr1; + } + + public String getAtrr2() { + return atrr2; + } + + public void setAtrr2(String atrr2) { + this.atrr2 = atrr2; + } + + public String getAtrr3() { + return atrr3; + } + + public void setAtrr3(String atrr3) { + this.atrr3 = atrr3; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getBucketId() { + return bucketId; + } + + public void setBucketId(String bucketId) { + this.bucketId = bucketId; + } + + public String getBucketCode() { + return bucketCode; + } + + public void setBucketCode(String bucketCode) { + this.bucketCode = bucketCode; + } + + public String getMaterialCode() { + return materialCode; + } + + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getMaterialId() { + return materialId; + } + + public void setMaterialId(String materialId) { + this.materialId = materialId; + } + + public String getMaterialName() { + return materialName; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + public String getProductName() { + return productName; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public Long getShiftId() { + return shiftId; + } + + public void setShiftId(Long shiftId) { + this.shiftId = shiftId; + } + + public String getShiftCode() { + return shiftCode; + } + + public void setShiftCode(String shiftCode) { + this.shiftCode = shiftCode; + } + + public String getShiftDesc() { + return shiftDesc; + } + + public void setShiftDesc(String shiftDesc) { + this.shiftDesc = shiftDesc; + } + + public Date getPlanTime() { + return planTime; + } + + public void setPlanTime(Date planTime) { + this.planTime = planTime; + } + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public Date getProductDate() { + return productDate; + } + + public void setProductDate(Date productDate) { + this.productDate = productDate; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("factoryCode", getFactoryCode()) + .append("wetMaterialPlanId", getWetMaterialPlanId()) + .append("workorderId", getWorkorderId()) + .append("atrr1", getAtrr1()) + .append("atrr2", getAtrr2()) + .append("atrr3", getAtrr3()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("bucketId", getBucketId()) + .append("bucketCode", getBucketCode()) + .append("materialCode", getMaterialCode()) + .append("materialId", getMaterialId()) + .append("materialName", getMaterialName()) + .append("productName", getProductName()) + .append("shiftId", getShiftId()) + .append("shiftCode", getShiftCode()) + .append("shiftDesc", getShiftDesc()) + .append("planTime", getPlanTime()) + .append("workorderCode", getWorkorderCode()) + .append("productDate", getProductDate()) + .append("bucketName", getBucketName()) + .toString(); + } +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderMapper.java new file mode 100644 index 000000000..828d9938e --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderMapper.java @@ -0,0 +1,22 @@ +package com.op.wms.mapper; + +import com.op.wms.domain.CascaderDTO; +import org.apache.ibatis.annotations.MapKey; + + + +import java.util.Map; + +/** + * 订单Mapper接口 + * + * @author Open Platform + * @date 2023-07-13 + */ + +public interface ProOrderMapper { + + + @MapKey("value") + Map getEquipInfoByCodes(String equipCodes); +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderWorkorderMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderWorkorderMapper.java new file mode 100644 index 000000000..191547d38 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderWorkorderMapper.java @@ -0,0 +1,30 @@ +package com.op.wms.mapper; + + +import com.op.wms.domain.ProOrderWorkorder; +import com.op.wms.domain.ProWetMaterialPlanDetail; + + + +import java.util.List; + +/** + * 生产工单Mapper接口 + * + * @author Open Platform + * @date 2023-07-18 + */ + +public interface ProOrderWorkorderMapper { + + List selectProOrderWorkorderList999(ProOrderWorkorder proOrderWorkorder); + + ProWetMaterialPlanDetail getWetMaterial(String workorderId); + + List selectProOrderWorkorderList(ProOrderWorkorder proOrderWorkorder); + + String selectRouteNameByRouteCode(String routeCode); + + ProOrderWorkorder selectWorkOrderByCode(String code); +} + diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsToWCSInterfaceMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsToWCSInterfaceMapper.java index 5956bae89..a59f80a55 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsToWCSInterfaceMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsToWCSInterfaceMapper.java @@ -1,7 +1,12 @@ package com.op.wms.mapper; +import com.op.wms.domain.ProOrderWorkorder; +import com.op.wms.domain.ProWetMaterialPlanDetail; import com.op.wms.domain.WmsToWCSDTO; +import java.util.List; + public interface WmsToWCSInterfaceMapper { WmsToWCSDTO selectWmsToWCSDTO(WmsToWCSDTO wcsdto); + } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IBpRawMaterialInDetailService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IBpRawMaterialInDetailService.java index 73f0c1c26..a47cc37ec 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IBpRawMaterialInDetailService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IBpRawMaterialInDetailService.java @@ -3,6 +3,7 @@ package com.op.wms.service; import java.util.List; import com.microsoft.windowsazure.exception.ServiceException; +import com.op.common.core.web.domain.AjaxResult; import com.op.wms.domain.BpRawMaterialInDetail; /** @@ -51,7 +52,7 @@ public interface IBpRawMaterialInDetailService * @param ids 需要删除的白坯原材料入库明细主键集合 * @return 结果 */ - public int deleteBpRawMaterialInDetailByIds(String[] ids); + public AjaxResult deleteBpRawMaterialInDetailByIds(String[] ids); /** * 删除白坯原材料入库明细信息 diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsToWCSInterfaceService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsToWCSInterfaceService.java index 53250efea..82954fc31 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsToWCSInterfaceService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsToWCSInterfaceService.java @@ -1,7 +1,11 @@ package com.op.wms.service; +import com.op.common.core.web.domain.AjaxResult; +import com.op.wms.domain.ProOrderWorkorder; import com.op.wms.domain.WmsToWCSDTO; +import java.util.List; + public interface IWmsToWCSInterfaceService { WmsToWCSDTO requestMaterialLoadNo(WmsToWCSDTO wcsdto); @@ -12,4 +16,8 @@ public interface IWmsToWCSInterfaceService { WmsToWCSDTO issuanceOfBlankOutboundDemand(WmsToWCSDTO wcsdto); WmsToWCSDTO blankDesignatedPalletOutbound(WmsToWCSDTO wcsdto); + + List selectProOrderWorkorderList(ProOrderWorkorder proOrderWorkorder); + + AjaxResult getWorkOrders(String code); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/BpRawMaterialInDetailServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/BpRawMaterialInDetailServiceImpl.java index 92080165f..e01e41ca4 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/BpRawMaterialInDetailServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/BpRawMaterialInDetailServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.microsoft.windowsazure.exception.ServiceException; import com.op.common.core.context.SecurityContextHolder; import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.core.web.domain.AjaxResult; import com.op.wms.domain.BaseProduct; import com.op.wms.domain.BpRawMaterialIn; import com.op.wms.mapper.BaseProductMapper; @@ -72,6 +73,7 @@ public class BpRawMaterialInDetailServiceImpl implements IBpRawMaterialInDetailS @Override @DS("#header.poolName") public int insertBpRawMaterialInDetail(BpRawMaterialInDetail bpRawMaterialInDetail) throws ServiceException { + int reselt=1; //获取当前所选工厂 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String key = "#header.poolName"; @@ -103,7 +105,7 @@ public class BpRawMaterialInDetailServiceImpl implements IBpRawMaterialInDetailS bpRawMaterialIn1.setMaterialCode(String.valueOf(baseProduct)); bpRawMaterialIn1.setUnit(bpRawMaterialInDetail.getUnit()); bpRawMaterialIn1.setAmountReal(bpRawMaterialInDetail.getAmountReal()); - bpRawMaterialInMapper.insertBpRawMaterialIn(bpRawMaterialIn1); + reselt=bpRawMaterialInMapper.insertBpRawMaterialIn(bpRawMaterialIn1); }else { //物料存在,加库存 bpRawMaterialIn.getAmountReal();//原有 @@ -111,7 +113,6 @@ public class BpRawMaterialInDetailServiceImpl implements IBpRawMaterialInDetailS bpRawMaterialIn.setAmountReal(bpRawMaterialIn.getAmountReal()+bpRawMaterialInDetail.getAmountReal()); bpRawMaterialInMapper.updateBpRawMaterialIn(bpRawMaterialIn); } - int reselt=1; return reselt; } @@ -136,9 +137,24 @@ public class BpRawMaterialInDetailServiceImpl implements IBpRawMaterialInDetailS */ @Override @DS("#header.poolName") - public int deleteBpRawMaterialInDetailByIds(String[] ids) + public AjaxResult deleteBpRawMaterialInDetailByIds(String[] ids) { - return bpRawMaterialInDetailMapper.deleteBpRawMaterialInDetailByIds(ids); + for (String id : ids) { + BpRawMaterialInDetail bpRawMaterialInDetail = bpRawMaterialInDetailMapper.selectBpRawMaterialInDetailById(id); + BpRawMaterialIn bpRawMaterialIn = bpRawMaterialInMapper.selectBpRawMaterialInBymateriaName(bpRawMaterialInDetail.getMaterialName()); + if (bpRawMaterialIn==null){ + bpRawMaterialInDetailMapper.deleteBpRawMaterialInDetailById(id); + }else { + if (bpRawMaterialIn.getAmountReal()>=bpRawMaterialInDetail.getAmountReal()){ + bpRawMaterialInDetailMapper.deleteBpRawMaterialInDetailById(id); + bpRawMaterialIn.setAmountReal(bpRawMaterialIn.getAmountReal()-bpRawMaterialInDetail.getAmountReal()); + bpRawMaterialInMapper.updateBpRawMaterialIn(bpRawMaterialIn); + }else { + return AjaxResult.error(); + } + } + } + return AjaxResult.success(); } /** @@ -149,8 +165,7 @@ public class BpRawMaterialInDetailServiceImpl implements IBpRawMaterialInDetailS */ @Override @DS("#header.poolName") - public int deleteBpRawMaterialInDetailById(String id) - { + public int deleteBpRawMaterialInDetailById(String id) { return bpRawMaterialInDetailMapper.deleteBpRawMaterialInDetailById(id); } } 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 30a450166..af94faad2 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 @@ -628,7 +628,6 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { public ProOrderWorkorder selectWmsOdsWhiteEmbryoInhAnd(WmsOdsWhiteEmbryoIn wmsOdsWhiteEmbryoIns) { //pro order workorder //ipro order workorder batch - DynamicDataSourceContextHolder.push("ds_" + wmsOdsWhiteEmbryoIns.getSiteCode()); ProOrderWorkorder proOrderWorkorder= wmsOdsWhiteEmbryoInMapper.selectProOrderWorkorder(wmsOdsWhiteEmbryoIns); if (proOrderWorkorder!=null){ @@ -644,6 +643,7 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { proOrderWorkorder.setProOrderWorkorderBatchList(proOrderWorkorderBatchList); } + proOrderWorkorder.setUnit("辆"); return proOrderWorkorder; } @@ -693,6 +693,7 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { wmsOdsEmStorageNewsSn.setCreateBy(wmsOdsWhiteEmbryoIn.getCreateBy()); wmsOdsEmStorageNewsSn.setGmtCreate(new Date()); wmsOdsEmStorageNewsSn.setActiveFlag("1"); + wmsOdsEmStorageNewsSn.setUserDefined1(wmsOdsWhiteEmbryoIn.getOrderCode()); wmsOdsEmStorageNewsSn.setFactoryCode(wmsOdsWhiteEmbryoIn.getSiteCode()); wmsOdsEmStorageNewsSnMapper.insertWmsOdsEmStorageNewsSn(wmsOdsEmStorageNewsSn); WmsOdsEmStorageNews wmsOdsEmStorageNews=new WmsOdsEmStorageNews(); diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsToWCSInterfaceServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsToWCSInterfaceServiceImpl.java index 882981c81..4b19e6202 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsToWCSInterfaceServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsToWCSInterfaceServiceImpl.java @@ -1,18 +1,27 @@ package com.op.wms.service.impl; +import com.alibaba.fastjson2.JSONArray; 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.core.web.domain.AjaxResult; import com.op.wms.domain.*; import com.op.wms.mapper.*; import com.op.wms.service.IWmsToWCSInterfaceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; + +import static com.op.common.core.web.domain.AjaxResult.success; @Service public class WmsToWCSInterfaceServiceImpl implements IWmsToWCSInterfaceService { @@ -26,6 +35,10 @@ public class WmsToWCSInterfaceServiceImpl implements IWmsToWCSInterfaceService { private WmsOdsEmStorageNewsMapper wmsOdsEmStorageNewsMapper; @Autowired private OdsWhiteEmbryoMapper odsWhiteEmbryoMapper; + @Autowired + private ProOrderMapper proOrderMapper; + @Autowired + private ProOrderWorkorderMapper proOrderWorkorderMapper; @Override @DS("#header.poolName") @@ -144,4 +157,72 @@ public class WmsToWCSInterfaceServiceImpl implements IWmsToWCSInterfaceService { return null; } + + @Override + @DS("#header.poolName") + public List selectProOrderWorkorderList(ProOrderWorkorder proOrderWorkorder) { + List workorderList = null; + String key = "#header.poolName"; + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String factoryCode = request.getHeader(key.substring(8)).replace("ds_", ""); + if ("999".equals(factoryCode)) { + workorderList = proOrderWorkorderMapper.selectProOrderWorkorderList999(proOrderWorkorder); + for (ProOrderWorkorder owork : workorderList) { + ProWetMaterialPlanDetail material = proOrderWorkorderMapper.getWetMaterial(owork.getWorkorderId()); + owork.setMaterialCode(material.getMaterialCode()); + owork.setMaterialName(material.getMaterialName()); + } + } else { + workorderList = proOrderWorkorderMapper.selectProOrderWorkorderList(proOrderWorkorder); + } + + for (ProOrderWorkorder workorder : workorderList) { + String prodLineName = ""; + String equipCods = "'"; + System.out.println("workorder_id:" + workorder.getWorkorderId()); + System.out.println("prodLineCode:" + workorder.getProdLineCode()); + JSONArray codeArray = JSONArray.parseArray(workorder.getProdLineCode()); + for (int c = 0; c < codeArray.size(); c++) { + equipCods += codeArray.getJSONArray(c).getString(1) + "','"; + } + + Map equipMap = proOrderMapper.getEquipInfoByCodes(equipCods.substring(1));//设备字典 + for (int c = 0; c < codeArray.size(); c++) { + String equipCode = codeArray.getJSONArray(c).getString(1); + CascaderDTO eInfo = equipMap.get(equipCode); + if (eInfo != null) { + prodLineName += eInfo.getLabel() + ","; + } + } + + workorder.setProdLineName(prodLineName); +// // 通过设备code查询出机型名称 +// workorder.setProdLineCode(proOrderMapper.selectProdLineName(workorder.getProdLineCode())); + // 通过工艺编码code查询出机型名称 + workorder.setRouteName(proOrderWorkorderMapper.selectRouteNameByRouteCode(workorder.getRouteCode())); +// +// //批次信息(母) +// List batchs = proOrderWorkorderMapper.getBatchInfo(workorder.getWorkorderId()); +// workorder.setBatchInfo(batchs); + } + for (ProOrderWorkorder proOrderWorkorder1:workorderList){ + proOrderWorkorder1.setUnit("辆"); + } + return workorderList; + } + + @Override + @DS("#header.poolName") + public AjaxResult getWorkOrders(String code) { + // 创建返回工单列表 + List proOrderWorkorderList = new ArrayList(); + // 查询该工单信息 + ProOrderWorkorder pWorkorder = proOrderWorkorderMapper.selectWorkOrderByCode(code); + proOrderWorkorderList.add(pWorkorder); + for (ProOrderWorkorder proOrderWorkorder1:proOrderWorkorderList){ + proOrderWorkorder1.setUnit("辆"); + } + + return success(proOrderWorkorderList); + } } diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml index bad947c4a..ef451c8a8 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml @@ -1486,6 +1486,7 @@ user_defined2 userDefined2, create_by createBy, gmt_create createDate, + user_defined4 userDefined4, user_defined3 userDefined3 FROM wms_raw_mission_out diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/ProOrderMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/ProOrderMapper.xml new file mode 100644 index 000000000..4ca98f5b4 --- /dev/null +++ b/op-modules/op-wms/src/main/resources/mapper/wms/ProOrderMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/ProOrderWorkorderMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/ProOrderWorkorderMapper.xml new file mode 100644 index 000000000..1549da5d1 --- /dev/null +++ b/op-modules/op-wms/src/main/resources/mapper/wms/ProOrderWorkorderMapper.xml @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select workorder_id, workorder_code, workorder_name, order_id, order_code, product_id, product_code, product_name, + product_spc, unit, quantity_produced, quantity_split, route_code, prod_line_code, product_date, + shift_id, parent_order, ancestors, status, remark, attr1, attr2, attr3, attr4, create_by, create_time, + update_by, update_time, prod_type, factory_code , end_flag , car_num,sort_no,workorder_code_sap + from pro_order_workorder + + + + + + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsWhiteEmbryoInMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsWhiteEmbryoInMapper.xml index f6c17e309..0a737e562 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsWhiteEmbryoInMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsWhiteEmbryoInMapper.xml @@ -254,6 +254,7 @@ product_date productDate, factory_code factoryCode, prod_type prodType, + attr1, workorder_code_sap workorderCodeSap FROM pro_order_workorder