diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.xml index 264b1a2c..1211fabb 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.xml @@ -15,7 +15,8 @@ 1 = 1 and mater.material_type_id = '1528555445302726656' AND (mater.material_code LIKE '%${query.material_code}%' or - mater.material_name LIKE '%${query.material_code}%') + mater.material_name LIKE '%${query.material_code}%') or + mater.material_spec LIKE '%${query.material_code}%') order by mater.material_code ASC diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/PDAEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/PDAEnum.java index 2a11bca4..f8ade71d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/PDAEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/PDAEnum.java @@ -13,14 +13,16 @@ import java.util.Map; public enum PDAEnum { //点位区域 REGION_CODE(MapOf.of("半成品入库区域", "A1_BCPRK01", "半成品出库区域", "A1_BCPCK01","成品入库区域", - "A1_CPRK01","半成品盘点区域", "A1_BCP_PP","海柔半成品出库区域","A3_BCPCK01", - "发货区域","A1_FH01")), + "A1_CPRK01","半成品盘点区域", "A1_BCP_PP","海柔半成品出库区域","A3_BCPCK01","海柔半成品入库区域","A3_BCPRK01", + "发货区域","A1_FH01","三线半成品空箱出库区域","A3_BCPKXCK01")), //库区编码 SECT_CODE(MapOf.of("半成品库区", "KQ005")), //库区id SECT_ID(MapOf.of("成品库区", "1528631043496742912")), //仓库id STOR_ID(MapOf.of("紫铜三线半成品仓库", "15286279952695336963")), + //车间 + WORKSHOP_ID(MapOf.of("智能三线车间", "A3")), //物料类别 MATERIAL_CLASS(MapOf.of("管件原材料", "1503644349995552768","管件半成品", "1528555443906023424","管件成品", "1528555444031852544")), ; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpEmpOutController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpEmpOutController.java new file mode 100644 index 00000000..13e14969 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpEmpOutController.java @@ -0,0 +1,52 @@ +package org.nl.wms.storage_manage.pda.controller; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.common.anno.Log; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpEmpOutService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +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; + +/** + *

+ * 手持半成品出库 前端控制器 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +@RestController +@RequestMapping("/api/pda/hrBcp/empOut") +public class PdaStHrBcpEmpOutController { + + @Autowired + private PdaStHrBcpEmpOutService pdaStHrBcpEmpOutService; + + @PostMapping("/getIvt") + @Log("获取库存") + //("获取库存") + public ResponseEntity getMaterial(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaStHrBcpEmpOutService.getIvt(whereJson), HttpStatus.OK); + } + + @PostMapping("/getPoint") + @Log("获取入库点") + //("获取入库点") + public ResponseEntity getPoint() { + return new ResponseEntity<>(pdaStHrBcpEmpOutService.getPoint(), HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("出库确认") + //("出库确认") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaStHrBcpEmpOutService.confirm(whereJson), HttpStatus.OK); + } + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpInController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpInController.java new file mode 100644 index 00000000..3e9601c5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpInController.java @@ -0,0 +1,60 @@ +package org.nl.wms.storage_manage.pda.controller; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpInService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +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; + +/** + *

+ * 手持半成品入库 前端控制器 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +@RestController +@RequestMapping("/api/pda/hrBcp/iosIn") +public class PdaStHrBcpInController { + + @Autowired + private PdaStHrBcpInService pdaStHrBcpInService; + + @PostMapping("/getMaterial") + @Log("查询物料") + //("查询物料") + public ResponseEntity getMaterial(@RequestBody JSONObject whereJson, PageQuery pageQuery) { + return new ResponseEntity<>(pdaStHrBcpInService.getMaterial(whereJson,pageQuery), HttpStatus.OK); + } + + @PostMapping("/getWork") + @Log("获取工序下拉框") + //("获取工序下拉框") + public ResponseEntity getWork() { + return new ResponseEntity<>(pdaStHrBcpInService.getWork(), HttpStatus.OK); + } + + @PostMapping("/getPoint") + @Log("获取入库点") + //("获取入库点") + public ResponseEntity getPoint() { + return new ResponseEntity<>(pdaStHrBcpInService.getPoint(), HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("确认入库") + //("确认入库") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaStHrBcpInService.confirm(whereJson), HttpStatus.OK); + } + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpOutController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpOutController.java new file mode 100644 index 00000000..a5ef4926 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpOutController.java @@ -0,0 +1,54 @@ +package org.nl.wms.storage_manage.pda.controller; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpInService; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpOutService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +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; + +/** + *

+ * 手持半成品出库 前端控制器 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +@RestController +@RequestMapping("/api/pda/hrBcp/iosOut") +public class PdaStHrBcpOutController { + + @Autowired + private PdaStHrBcpOutService pdaStHrBcpOutService; + + @PostMapping("/getIvt") + @Log("获取库存") + //("获取库存") + public ResponseEntity getMaterial(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaStHrBcpOutService.getIvt(whereJson), HttpStatus.OK); + } + + @PostMapping("/getPoint") + @Log("获取入库点") + //("获取入库点") + public ResponseEntity getPoint() { + return new ResponseEntity<>(pdaStHrBcpOutService.getPoint(), HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("出库确认") + //("出库确认") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaStHrBcpOutService.confirm(whereJson), HttpStatus.OK); + } + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpEmpOutService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpEmpOutService.java new file mode 100644 index 00000000..0f698720 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpEmpOutService.java @@ -0,0 +1,33 @@ +package org.nl.wms.storage_manage.pda.service; + +import com.alibaba.fastjson.JSONObject; + +/** + *

+ * 手持半成品出库 服务类 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +public interface PdaStHrBcpEmpOutService { + + /** + * 获取库存 + * @param whereJson / + * @return / + */ + JSONObject getIvt(JSONObject whereJson); + + /** + * 获取入库点 + * @return / + */ + JSONObject getPoint(); + + /** + * 出库确认 + * @return / + */ + JSONObject confirm(JSONObject whereJson); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpInService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpInService.java new file mode 100644 index 00000000..bd59a677 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpInService.java @@ -0,0 +1,42 @@ +package org.nl.wms.storage_manage.pda.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.common.domain.query.PageQuery; + +/** + *

+ * 手持半成品入库 服务类 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +public interface PdaStHrBcpInService { + + /** + * 查询物料 + * @param whereJson / + * @return JSONObject / + */ + JSONObject getMaterial(JSONObject whereJson, PageQuery pageQuery); + + /** + * 获取工序下拉框 + * @return / + */ + JSONObject getWork(); + + /** + * 确认入库 + * @param whereJson / + * @return / + */ + JSONObject confirm(JSONObject whereJson); + + /** + * 获取入库点 + * @return / + */ + JSONObject getPoint(); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpOutService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpOutService.java new file mode 100644 index 00000000..a59c465b --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpOutService.java @@ -0,0 +1,34 @@ +package org.nl.wms.storage_manage.pda.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.common.domain.query.PageQuery; + +/** + *

+ * 手持半成品出库 服务类 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +public interface PdaStHrBcpOutService { + + /** + * 获取库存 + * @param whereJson / + * @return / + */ + JSONObject getIvt(JSONObject whereJson); + + /** + * 获取入库点 + * @return / + */ + JSONObject getPoint(); + + /** + * 出库确认 + * @return / + */ + JSONObject confirm(JSONObject whereJson); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpEmpOutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpEmpOutServiceImpl.java new file mode 100644 index 00000000..95e50e14 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpEmpOutServiceImpl.java @@ -0,0 +1,182 @@ +package org.nl.wms.storage_manage.pda.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.common.enums.AcsTaskEnum; +import org.nl.common.publish.BussEventMulticaster; +import org.nl.common.publish.event.PointEvent; +import org.nl.common.utils.IdUtil; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService; +import org.nl.wms.masterdata_manage.service.master.dao.MdPbMeasureunit; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService; +import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; +import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.IVTEnum; +import org.nl.wms.storage_manage.pda.PDAEnum; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpEmpOutService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.impl.StIvtIostorinvEmpBcpServiceImpl; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper.StIvtStructivtHrBcpMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +/** + *

+ * 手持半成品入库 服务实现类 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +@Service +public class PdaStHrBcpEmpOutServiceImpl implements PdaStHrBcpEmpOutService { + + @Autowired + private IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务 + + @Autowired + private IPdmBiWorkprocedureService iPdmBiWorkprocedureService; // 工序服务 + + @Autowired + private IStIvtIostorinvOrderService iStIvtIostorinvOrderService; // 出入库顺序服务 + + @Autowired + private ISchBasePointService iSchBasePointService; // 点位服务 + + @Autowired + private StIvtStructivtHrBcpMapper stIvtStructivtHrBcpMapper; //库存服务mapper + + @Autowired + protected IMdPbMeasureunitService iMdPbMeasureunitService; // 计量单位服务 + + @Autowired + private IStIvtStructattrService structattrService; // 仓位服务 + + @Autowired + private IStIvtSectattrService sectattrService; // 库区服务 + + @Override + public JSONObject getIvt(JSONObject whereJson) { + + StIvtSectattr sect = sectattrService.getOne( + new QueryWrapper().lambda() + .eq(StIvtSectattr::getSect_name, "海柔半成品库区") + ); + + List list = new ArrayList<>(); + if (ObjectUtil.isEmpty(whereJson.getString("storagevehicle_code"))) { + list = structattrService.list( + new QueryWrapper().lambda() + .eq(StIvtStructattr::getSect_id, sect.getSect_id()) + .eq(StIvtStructattr::getStor_id, sect.getStor_id()) + .eq(StIvtStructattr::getIs_used, true) + .eq(StIvtStructattr::getIs_emptyvehicle, true) + .eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .and(qr -> qr.ne(StIvtStructattr::getStoragevehicle_code, "") + .or().isNull(StIvtStructattr::getStoragevehicle_code) + ) + .orderByDesc(StIvtStructattr::getXqty) + .orderByAsc(StIvtStructattr::getYqty) + ); + } else { + list = structattrService.list( + new QueryWrapper().lambda() + .eq(StIvtStructattr::getSect_id, sect.getSect_id()) + .eq(StIvtStructattr::getStor_id, sect.getStor_id()) + .eq(StIvtStructattr::getIs_used, true) + .eq(StIvtStructattr::getIs_emptyvehicle, true) + .eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .and(qr -> qr.ne(StIvtStructattr::getStoragevehicle_code, "") + .or().isNull(StIvtStructattr::getStoragevehicle_code) + ) + .likeRight(StIvtStructattr::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + .orderByDesc(StIvtStructattr::getXqty) + .orderByAsc(StIvtStructattr::getYqty) + ); + } + + JSONObject result = new JSONObject(); + result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); + result.put("message", "查询成功"); + return result; + } + + @Override + public JSONObject getPoint() { + List list = iSchBasePointService.list( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("三线半成品空箱出库区域")) + .eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("是")) + .eq(SchBasePoint::getIs_delete, IOSEnum.IS_USED.code("否")) + ); + + JSONObject result = new JSONObject(); + result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); + result.put("message", "查询成功"); + return result; + } + + @Override + @Transactional + public JSONObject confirm(JSONObject whereJson) { + String point_code = whereJson.getString("point_code"); + + if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("点位不能为空!"); + + JSONArray rows = whereJson.getJSONArray("rows"); + + for (int i = 0; i < rows.size(); i++) { + JSONObject json = rows.getJSONObject(i); + + StIvtStructattr attrDao = structattrService.getById(json.getString("struct_id")); + + // 1.生成任务 + SchBaseTask taskDao = new SchBaseTask(); + PointEvent event = PointEvent.builder() + .type(AcsTaskEnum.TASK_STRUCT_HR_EMP_OUT) + .acs_task_type("16") + .task_group_id(IdUtil.getStringId()) + .point_code1(attrDao.getStruct_code()) + .point_code3(point_code) + .vehicle_code(attrDao.getStoragevehicle_code()) + .product_area("A3") + .callback((Consumer) taskDao::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + + // 2.下发任务 + StIvtIostorinvEmpBcpServiceImpl bean = SpringContextHolder.getBean(StIvtIostorinvEmpBcpServiceImpl.class); + bean.sendTask(taskDao.getTask_id()); + + // 3.锁定货位 + attrDao.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁")); + structattrService.updateById(attrDao); + + } + + JSONObject result = new JSONObject(); + result.put("data", ""); + result.put("message", "出库成功"); + return result; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpInServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpInServiceImpl.java new file mode 100644 index 00000000..81e049e6 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpInServiceImpl.java @@ -0,0 +1,152 @@ +package org.nl.wms.storage_manage.pda.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.IdUtil; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService; +import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; +import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.pda.PDAEnum; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpInService; +import org.nl.wms.storage_manage.pda.service.dto.PdaQuery; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvOrder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 手持半成品入库 服务实现类 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +@Service +public class PdaStHrBcpInServiceImpl implements PdaStHrBcpInService { + + @Autowired + private IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务 + + @Autowired + private IPdmBiWorkprocedureService iPdmBiWorkprocedureService; // 工序服务 + + @Autowired + private IStIvtIostorinvOrderService iStIvtIostorinvOrderService; // 出入库顺序服务 + + @Autowired + private ISchBasePointService iSchBasePointService; // 点位服务 + + @Override + public JSONObject getMaterial(JSONObject whereJson1, PageQuery pageQuery) { + PdaQuery whereJson = new PdaQuery(); + whereJson.setMaterial_code(whereJson1.getString("material_spec")); + int size = whereJson1.getIntValue("size"); + + int totalCount = 0; + + List list = new ArrayList<>(); + if (ObjectUtil.isEmpty(whereJson1.getString("material_spec"))) { + List list1 = iMdMeMaterialbaseService.list( + new QueryWrapper().lambda() + .eq(MdMeMaterialbase::getMaterial_type_id, "1528555445302726656") + ); + list = list1.subList(0, Math.min(list1.size(), size)); + totalCount = list1.size(); + } else { + List list1 = iMdMeMaterialbaseService.getPdaBcpGetMaterial(whereJson, pageQuery); + list = list1.subList(0, Math.min(list1.size(), size)); + totalCount = list1.size(); + } + + JSONObject result = new JSONObject(); + result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); + result.put("totalCount", totalCount); + result.put("message", "查询成功"); + return result; + } + + @Override + public JSONObject getWork() { + JSONArray array = iPdmBiWorkprocedureService.downSelect(PDAEnum.WORKSHOP_ID.code("智能三线车间")); + + JSONObject result = new JSONObject(); + result.put("data", array); + result.put("message", "查询成功"); + return result; + + } + + @Override + public JSONObject getPoint() { + List list = iSchBasePointService.list( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("海柔半成品入库区域")) + .eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("是")) + .eq(SchBasePoint::getIs_delete, IOSEnum.IS_USED.code("否")) + ); + + JSONObject result = new JSONObject(); + result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); + result.put("message", "查询成功"); + return result; + } + + @Override + @Transactional + public JSONObject confirm(JSONObject whereJson) { + // 校验 + if (ObjectUtil.isEmpty(whereJson.getString("material_code"))) throw new BadRequestException("请选择物料!"); + if (ObjectUtil.isEmpty(whereJson.getString("qty"))) throw new BadRequestException("请填写数量!"); + if (ObjectUtil.isEmpty(whereJson.getString("bar_code"))) throw new BadRequestException("请扫码!"); + if (ObjectUtil.isEmpty(whereJson.getString("point_code"))) throw new BadRequestException("请选择点位!"); + + + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getOne( + new QueryWrapper().lambda() + .eq(MdMeMaterialbase::getMaterial_code, whereJson.getString("material_code")) + , false); + + // 插入出入库顺序表 + StIvtIostorinvOrder dao = new StIvtIostorinvOrder(); + dao.setOrder_id(IdUtil.getStringId()); + dao.setWorkshop_id(PDAEnum.WORKSHOP_ID.code("智能三线车间")); + dao.setStor_id(PDAEnum.STOR_ID.code("紫铜三线半成品仓库")); + dao.setIn_device(whereJson.getString("point_code")); + dao.setBar_code(whereJson.getString("bar_code")); + dao.setMaterial_id(materDao.getMaterial_id()); + dao.setSale_id(whereJson.getString("sale_id")); + + // 重量 : kg + double weight = NumberUtil.div(NumberUtil.mul(materDao.getNet_weight().doubleValue(), whereJson.getDoubleValue("qty")), 1000); + dao.setWeight(BigDecimal.valueOf(weight)); + dao.setQty(whereJson.getBigDecimal("qty")); + dao.setType(IOSEnum.IO_TYPE.check("入库")); + dao.setIs_delete(false); + dao.setCreate_time(DateUtil.now()); + dao.setBiz_date(DateUtil.today()); + dao.setWorkprocedure_id(whereJson.getString("workprocedure_id")); + iStIvtIostorinvOrderService.save(dao); + + JSONObject result = new JSONObject(); + result.put("data", ""); + result.put("message", "操作成功"); + return result; + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpOutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpOutServiceImpl.java new file mode 100644 index 00000000..6b675b95 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpOutServiceImpl.java @@ -0,0 +1,157 @@ +package org.nl.wms.storage_manage.pda.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService; +import org.nl.wms.masterdata_manage.service.master.dao.MdPbMeasureunit; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService; +import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; +import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.IVTEnum; +import org.nl.wms.storage_manage.pda.PDAEnum; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpOutService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpOutService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper.StIvtStructivtHrBcpMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 手持半成品入库 服务实现类 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +@Service +public class PdaStHrBcpOutServiceImpl implements PdaStHrBcpOutService { + + @Autowired + private IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务 + + @Autowired + private ISchBasePointService iSchBasePointService; // 点位服务 + + @Autowired + private StIvtStructivtHrBcpMapper stIvtStructivtHrBcpMapper; //库存服务mapper + + @Autowired + protected IMdPbMeasureunitService iMdPbMeasureunitService; // 计量单位服务 + + @Autowired + private IStIvtStructattrService structattrService; // 仓位服务 + + @Autowired + private IStIvtIostorinvHrBcpOutService iStIvtIostorinvHrBcpOutService; // 半成品出库服务 + + @Override + public JSONObject getIvt(JSONObject whereJson) { + + JSONObject param = new JSONObject(); + param.put("material_code", whereJson.getString("material_spec")); + + List list = stIvtStructivtHrBcpMapper.getPdaBcpIvt(param); + + JSONObject result = new JSONObject(); + result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); + result.put("message", "查询成功"); + return result; + } + + @Override + public JSONObject getPoint() { + List list = iSchBasePointService.list( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("海柔半成品出库区域")) + .eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("是")) + .eq(SchBasePoint::getIs_delete, IOSEnum.IS_USED.code("否")) + ); + + JSONObject result = new JSONObject(); + result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); + result.put("message", "查询成功"); + return result; + } + + @Override + @Transactional + public JSONObject confirm(JSONObject whereJson) { + String point_code = whereJson.getString("point_code"); + + if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("点位不能为空!"); + + // 组织数据出库 + JSONArray rows = whereJson.getJSONArray("rows"); + + for (int i = 0; i < rows.size(); i++) { + JSONObject json = rows.getJSONObject(i); + + JSONObject jsonMst = new JSONObject(); + jsonMst.put("biz_date", DateUtil.today()); + jsonMst.put("bill_type", IOSEnum.BILL_TYPE_HR.code("生产出库")); + jsonMst.put("remark", "手持PDA创建" ); + jsonMst.put("product_code", PDAEnum.WORKSHOP_ID.code("智能三线车间") ); + jsonMst.put("point_code", point_code ); + jsonMst.put("stor_id", IOSEnum.STOR_CODE.code("海柔半成品")); + jsonMst.put("auto_send", "1"); // 是否自动创建任务并下发 + + JSONArray tableData = new JSONArray(); + + JSONObject jsonDtl = new JSONObject(); + jsonDtl.put("material_id", json.getString("material_id")); + jsonDtl.put("pcsn", ""); + jsonDtl.put("plan_qty", json.getString("canuse_qty")); + jsonDtl.put("quality_scode", IVTEnum.QUALITY_SCODE.code("合格品")); + jsonDtl.put("base_bill_code", ""); + + 物料信息: + { + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById( json.getString("material_id")); + MdPbMeasureunit untiDao = iMdPbMeasureunitService.getById(materDao.getBase_unit_id()); + + jsonDtl.put("qty_unit_id", untiDao.getMeasure_unit_id()); + jsonDtl.put("qty_unit_name", untiDao.getUnit_name()); + jsonDtl.put("unit_weight", materDao.getNet_weight()); + jsonDtl.put("storagevehicle_code", json.getString("storagevehicle_code")); + } + + 仓位信息: + { + StIvtStructattr attrDao = structattrService.getById(json.getString("struct_id")); + + jsonDtl.put("sect_id", attrDao.getSect_id()); + jsonDtl.put("sect_code", attrDao.getSect_code()); + jsonDtl.put("sect_name", attrDao.getSect_name()); + jsonDtl.put("struct_id", attrDao.getStruct_id()); + jsonDtl.put("struct_code", attrDao.getStruct_code()); + jsonDtl.put("struct_name", attrDao.getStruct_name()); + } + + tableData.add(jsonDtl); + jsonMst.put("tableData",tableData); + + // 调用出库服务 + iStIvtIostorinvHrBcpOutService.create(jsonMst); + } + + JSONObject result = new JSONObject(); + result.put("data", ""); + result.put("message", "出库成功"); + return result; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/StIvtIostorinvOrder.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/StIvtIostorinvOrder.java index 224b7fa3..b754543f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/StIvtIostorinvOrder.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/StIvtIostorinvOrder.java @@ -89,10 +89,15 @@ public class StIvtIostorinvOrder implements Serializable { */ private String type; + /** + * 工序标识 + */ + private String workprocedure_id; + /** * 是否删除 */ - private boolean is_delete; + private Boolean is_delete; /** * 创建时间 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvEmpBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvEmpBcpServiceImpl.java index aecb3f03..1a89659e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvEmpBcpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvEmpBcpServiceImpl.java @@ -262,7 +262,7 @@ public class StIvtIostorinvEmpBcpServiceImpl implements IStIvtIostorinvEmpBcpSe * 下发任务 * @param task_id / */ - private void sendTask(String task_id) { + public void sendTask(String task_id) { SchBaseTask taskDao = iSchBaseTaskService.getById(task_id); JSONArray param = new JSONArray(); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml index 07fa7c66..49fd4310 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml @@ -160,6 +160,7 @@ unit.unit_name, ROUND(ivt.canuse_qty / mater.net_weight,3) AS qty, attr.struct_name, + attr.struct_code, attr.sect_code, attr.sect_name, attr.stor_name, diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/stivt.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/stivt.xls index ff359395..ed3c9106 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/stivt.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/stivt.xls differ