diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/aps_manage/mps.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/aps_manage/mps.xls index f0615451..27cdf427 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/aps_manage/mps.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/aps_manage/mps.xls differ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 1f9b539b..69dc0067 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -89,8 +89,7 @@ public class AcsToWmsController { @ApiOperation("向wms反馈设备状态") @SaIgnore public ResponseEntity feedDeviceStatusType(@RequestBody JSONObject param) { - return null; -// return new ResponseEntity<>(acsToWmsService.feedDeviceStatusType(param), HttpStatus.OK); + return new ResponseEntity<>(acsToWmsService.feedDeviceStatusType(param), HttpStatus.OK); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 34ed7a8a..8145063d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -22,8 +22,6 @@ import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; import org.nl.wms.product_manage.sch.service.TaskService; import org.nl.wms.product_manage.sch.service.dto.TaskDto; import org.nl.wms.product_manage.sch.tasks.WashMachineryTask; -import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; -import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpStatus; @@ -49,8 +47,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ private TaskService taskService; @Autowired private CacheLineHandService cacheLineHandService; - @Autowired - private IPdmProduceWorkorderService workorderService; @@ -207,12 +203,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ public Map orderStatus(JSONObject orderJson) { JSONObject result = new JSONObject(); try { - PdmProduceWorkorder workorder = new PdmProduceWorkorder(); - workorder.setWorkorder_id(orderJson.getString("workorder_id")); - workorder.setWorkorder_status(orderJson.getString("status")); - workorder.setDq_real_qty(orderJson.getBigDecimal("real_qty")); - workorder.setRealproduceend_date(DateUtil.now()); - workorderService.updateById(workorder); + JSONObject map = new JSONObject(); + map.put("workorder_id", orderJson.getString("workorder_id")); + map.put("workorder_status", orderJson.getString("status")); + map.put("update_id", "1"); + map.put("real_qty", orderJson.getString("real_qty")); + map.put("device_code", ""); + map.put("update_name", "acs"); + map.put("update_time", DateUtil.now()); + map.put("realproduceend_date", DateUtil.now()); + WQLObject.getWQLObject("PDM_produce_workOrder").update(map, "workorder_id = '" + orderJson.getString("workorder_id") + "'"); + //OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,orderJson.getString("workorder_id"),MapOf.of("workorder_status", orderJson.getString("status"))); } catch (Exception e){ result.put("status", 400); result.put("message", e.getMessage()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java index 648b2e8b..b91a647c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java @@ -52,11 +52,7 @@ public class AgvInstService { @Autowired private ISchCachelineVehicleService cachelineVehicleService; - public static void main(String[] args) { - String a= "A1_DC_15_6"; - int i = a.lastIndexOf("_"); - System.out.println(a.substring(0, i)); - } + //满料请求点位确认 //1.判断当前设备路由表是否配置下一道路由设备,如果不是则说明直接到清洗 @@ -85,14 +81,11 @@ public class AgvInstService { if (next.getParams().get("cacheLine") == null){ throw new BadRequestException("当前任务下一道工序无可用设备"); } - nextPoint = getParamByXml(workprodure, next, nextPoint); + nextPoint = next.getParams().get("cacheLine"); cacheVehile = getCacheVehile(nextPoint, null); } - - 结果校验:{ - if (StringUtils.isBlank(nextPoint)) { - throw new BadRequestException("逻辑非配错误,请检查代码"); - } + if (StringUtils.isBlank(nextPoint)){ + throw new BadRequestException("逻辑非配错误,请检查代码"); } basePointService.update(new UpdateWrapper() .set("lock_type",StatusEnum.LOCK_ON.getCode()).set("task_id",task.getString("task_id")).eq("point_code",nextPoint)); @@ -103,20 +96,7 @@ public class AgvInstService { schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); schBaseTask.setUpdate_time(new Date()); taskService.updateById(schBaseTask); - } - - private String getParamByXml(Map workprodure, FlowElement next, String nextPoint) { - Object cacheLine = next.getParams().get("cacheLine"); - if (cacheLine instanceof String){ - nextPoint = (String) cacheLine; - } - if (cacheLine instanceof Map){ - nextPoint = ((Map) cacheLine).get(workprodure.get("device_code").substring(0, workprodure.get("device_code").lastIndexOf("_"))); - } - return nextPoint; - } - - ; + }; public FlowElement getFlowElement(JSONObject task,Map workprodure){ if (CollectionUtils.isEmpty(workprodure)){ @@ -146,7 +126,7 @@ public class AgvInstService { //3.agv根据对应载具列表行进扫码匹配:匹配到对应物料则创建点对点任务 public void empMatter(JSONObject task){ //参数 - String targetDevice = task.getString("point_code2"); + String targetDevice = task.getString("next_point_code"); String material_id = task.getString("material_id"); SchBasePoint devicePoint = basePointService.getOne(new QueryWrapper() .eq("point_code", targetDevice) @@ -177,14 +157,12 @@ public class AgvInstService { } public String getCacheVehile(String cacheLine,String materialId){ - if (StringUtils.isNotEmpty(cacheLine)){ - int count = taskService.count(new QueryWrapper().eq("point_code2", cacheLine).lt("task_status", StatusEnum.TASK_FINISH.getCode())); - String status = StringUtils.isBlank(materialId) ? StatusEnum.CACHE_VEL_EMT.getCode() : StatusEnum.CACHE_VEL_FULL.getCode(); - List vehicle = cachelineVehicleService.getCachelineVehicle(MapOf.of("vehicle_status", status, "material_id", materialId)); - if (vehicle.size()>0){ - if (vehicle.size()>count){ - return vehicle.stream().map(SchCachelineVehicle::getVehicle_code).collect(Collectors.joining(",")); - } + int count = taskService.count(new QueryWrapper().eq("point_code2", cacheLine).lt("task_status", StatusEnum.TASK_FINISH.getCode())); + String status = StringUtils.isBlank(materialId) ? StatusEnum.CACHE_VEL_EMT.getCode() : StatusEnum.CACHE_VEL_FULL.getCode(); + List vehicle = cachelineVehicleService.getCachelineVehicle(MapOf.of("vehicle_status", status, "material_id", materialId)); + if (vehicle.size()>0){ + if (vehicle.size()>count){ + return vehicle.stream().map(SchCachelineVehicle::getVehicle_code).collect(Collectors.joining(",")); } } return ""; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/master/dao/MdPbMeasureunit.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/master/dao/MdPbMeasureunit.java index fcee0abb..8b9c00ef 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/master/dao/MdPbMeasureunit.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/master/dao/MdPbMeasureunit.java @@ -1,5 +1,6 @@ package org.nl.wms.masterdata_manage.service.master.dao; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; @@ -27,6 +28,7 @@ public class MdPbMeasureunit implements Serializable { /** * 计量单位标识 */ + @TableId private String measure_unit_id; /** diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/MdMeMaterialbase.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/MdMeMaterialbase.java index fa52e5f3..e98f1d4e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/MdMeMaterialbase.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/MdMeMaterialbase.java @@ -1,6 +1,8 @@ package org.nl.wms.masterdata_manage.service.material.dao; import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.util.Date; @@ -26,6 +28,7 @@ public class MdMeMaterialbase implements Serializable { /** * 物料标识 */ + @TableId private String material_id; /** diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java index edee1353..531d7963 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java @@ -3,6 +3,8 @@ package org.nl.wms.masterdata_manage.service.vehicle.dao; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; + +import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; @@ -15,6 +17,7 @@ import lombok.EqualsAndHashCode; * @since 2023-05-10 */ @Data +@Builder @EqualsAndHashCode(callSuper = false) @TableName("md_pb_bucketrecord") public class MdPbBucketrecord implements Serializable { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbStoragevehicleext.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbStoragevehicleext.java index fdc816a6..a5b05c90 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbStoragevehicleext.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbStoragevehicleext.java @@ -6,6 +6,7 @@ import java.util.Date; import java.io.Serializable; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; /** *

@@ -17,6 +18,7 @@ import lombok.EqualsAndHashCode; */ @Data @EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) @TableName("md_pb_storagevehicleext") public class MdPbStoragevehicleext implements Serializable { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/ONEPART_QUERY.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/ONEPART_QUERY.wql index c7facecb..11fa5445 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/ONEPART_QUERY.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/ONEPART_QUERY.wql @@ -72,7 +72,7 @@ WHERE d.is_delete = 0 ORDER BY device_code - LIMIT 200 + LIMIT 10 ENDSELECT ENDQUERY ENDIF diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/controller/saleOrder/MpsSaleOrderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/controller/saleOrder/MpsSaleOrderController.java new file mode 100644 index 00000000..da14b307 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/controller/saleOrder/MpsSaleOrderController.java @@ -0,0 +1,45 @@ +package org.nl.wms.mps_manage.ordermanage.controller.saleOrder; + + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.IMpsSaleOrderService; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto.OrderQuery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 生产订单表 前端控制器 + *

+ * + * @author generator + * @since 2023-05-25 + */ +@RestController +@RequiredArgsConstructor +@Api(tags = "生产订单") +@Slf4j +@RequestMapping("/api/mpsSaleOrder") +public class MpsSaleOrderController { + + @Autowired + private IMpsSaleOrderService iMpsSaleOrderService; + + @GetMapping + @Log("查询生产订单") + @ApiOperation("查询生产订单") + public ResponseEntity query(OrderQuery query, PageQuery page){ + return new ResponseEntity<>(iMpsSaleOrderService.pageQuery(query,page), HttpStatus.OK); + } + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/IMpsSaleOrderService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/IMpsSaleOrderService.java new file mode 100644 index 00000000..7d2c3655 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/IMpsSaleOrderService.java @@ -0,0 +1,24 @@ +package org.nl.wms.mps_manage.ordermanage.service.saleOrder; + +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto.OrderQuery; + +/** + *

+ * 生产订单表 服务类 + *

+ * + * @author generator + * @since 2023-05-25 + */ +public interface IMpsSaleOrderService extends IService { + + /** + * 分页查询 + * @param query,page / + * @return JSONObject + */ + Object pageQuery(OrderQuery query, PageQuery page); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java new file mode 100644 index 00000000..2244a6dc --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java @@ -0,0 +1,165 @@ +package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 生产订单表 + *

+ * + * @author generator + * @since 2023-05-25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("mps_sale_order") +public class MpsSaleOrder implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 销售单标识 + */ + private Long sale_id; + + /** + * 销售单号 + */ + private String sale_code; + + /** + * 明细序号 + */ + private BigDecimal seq_no; + + /** + * 销售单类型 + */ + private String sale_type; + + /** + * 物料标识 + */ + private Long material_id; + + /** + * 状态 + */ + private String status; + + /** + * 销售数量 + */ + private BigDecimal sale_qty; + + /** + * 生产顺序 + */ + private BigDecimal produce_seq; + + /** + * 客户标识 + */ + private Long cust_id; + + /** + * 客户编码 + */ + private String cust_code; + + /** + * 客户名称 + */ + private String cust_name; + + /** + * 计量单位标识 + */ + private Long qty_unit_id; + + /** + * 计划交期 + */ + private String plandeliver_date; + + /** + * 创建人 + */ + private Long create_id; + + /** + * 创建人姓名 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 提交人 + */ + private Long audit_optid; + + /** + * 提交时间 + */ + private String audit_time; + + /** + * 提交人姓名 + */ + private String audit_optname; + + /** + * 确认人 + */ + private Long confirm_optid; + + /** + * 确认人姓名 + */ + private String confirm_optname; + + /** + * 确认时间 + */ + private String confirm_time; + + /** + * 是否删除 + */ + private String is_delete; + + /** + * 备注 + */ + private String remark; + + /** + * 车间标识 + */ + private Long workshop_id; + + /** + * 生产数量 + */ + private BigDecimal product_qty; + + /** + * 预入库数量 + */ + private BigDecimal instor_qty; + + /** + * 发货数量 + */ + private BigDecimal sendout_qty; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/MpsSaleOrderMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/MpsSaleOrderMapper.java new file mode 100644 index 00000000..f6e32569 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/MpsSaleOrderMapper.java @@ -0,0 +1,23 @@ +package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto.OrderQuery; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 生产订单表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-05-25 + */ +public interface MpsSaleOrderMapper extends BaseMapper { + + List pageQuery(@Param("query") OrderQuery query, @Param("pageQuery") PageQuery pageQuery); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml new file mode 100644 index 00000000..e2837d2e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml @@ -0,0 +1,36 @@ + + + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dto/OrderQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dto/OrderQuery.java new file mode 100644 index 00000000..a9c961e7 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dto/OrderQuery.java @@ -0,0 +1,34 @@ +package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.common.domain.query.QParam; +import org.nl.common.enums.QueryTEnum; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder; + +/* + * @author ZZQ + * @Date 2023/5/4 19:49 + */ +@Data +public class OrderQuery extends BaseQuery { + + + private String sale_code; + + private String status; + + private String sale_type; + + private String cust_code; + + private Boolean is_delete = false; + + + @Override + public void paramMapping() { + super.doP.put("sale_code", QParam.builder().k(new String[]{"sale_code"}).type(QueryTEnum.LK).build()); + } + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/impl/MpsSaleOrderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/impl/MpsSaleOrderServiceImpl.java new file mode 100644 index 00000000..0e7ee167 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/impl/MpsSaleOrderServiceImpl.java @@ -0,0 +1,36 @@ +package org.nl.wms.mps_manage.ordermanage.service.saleOrder.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.IMpsSaleOrderService; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.mapper.MpsSaleOrderMapper; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto.OrderQuery; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 生产订单表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-25 + */ +@Service +public class MpsSaleOrderServiceImpl extends ServiceImpl implements IMpsSaleOrderService { + + @Override + public Object pageQuery(OrderQuery query, PageQuery pageQuery) { + Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); + List mst_detail = baseMapper.pageQuery(query, pageQuery); + TableDataInfo build = TableDataInfo.build(mst_detail); + build.setTotalElements(page.getTotal()); + return build; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java index 1a3ff0f1..8aae9977 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java @@ -6,7 +6,6 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.InterfaceLogType; @@ -19,17 +18,11 @@ import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.ext.acs.service.impl.AgvInstService; import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; -import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; -import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; -import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; -import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -38,10 +31,7 @@ import java.util.Map; @Slf4j @Service public class SpeEmpTask extends AbstractAcsTask { - @Autowired - private IPdmProduceWorkorderService workorderService; - @Autowired - private ISchBaseTaskService taskService; + @Autowired AgvInstService agvInstService; private final Map SpeHandles= new HashMap<>(); @@ -72,33 +62,28 @@ public class SpeEmpTask extends AbstractAcsTask { @Override @Transactional public String createTask(JSONObject param) { - //{"workorder_code":230523019,"device_code":"A1_TW_15_6_D","type":"1"} + String point_code = param.getString("device_code"); String quantity = param.getString("quantity"); String type = param.getString("type"); - PdmProduceWorkorder one = workorderService.getOne(new QueryWrapper() - .eq("workorder_code", param.getString("workorder_code")) - .lt("workorder_status", StatusEnum.TASK_FINISH.getCode())); - Assert.notNull(one, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); - List list = taskService.list(new QueryWrapper() - .eq("point_code2", point_code).lt("task_status", StatusEnum.TASK_FINISH.getCode()) - ); - if (!CollectionUtils.isEmpty(list)){ - throw new BadRequestException(String.format("设备%s存在未完成任务", param.getString("device_code"))); - } + JSONObject order = WQLObject.getWQLObject("PDM_produce_workOrder").query("workorder_code = '" + param.getString("workorder_code") + "' and is_delete = 0 and workorder_status != "+StatusEnum.TASK_FINISH.getCode()).uniqueResult(0); + Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); + JSONArray chectIndDatabase = WQLObject.getWQLObject("SCH_BASE_Task").query((AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type) ? "point_code1" : "point_code2") + "= '" + point_code + "' and task_status < " + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(chectIndDatabase)){ + Assert.notNull(order, String.format("设备%s存在未完成任务", param.getString("point_code"))); + } JSONObject form = new JSONObject(MapOf.of("start_point_code","", "next_point_code",point_code,"return_point_code", "","vehicle_code", - "","product_area",one.getProduct_area(),"quantity", quantity,"type",type,"material_id", one.getMaterial_id())); + "","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id"))); String taskId = IdUtil.getSnowflake(1, 1).nextId() + ""; - JSONObject task = packageParam(form, taskId); - taskService.save(task.toJavaObject(SchBaseTask.class)); + JSONObject task = packageParam(form, taskId); + WQLObject.getWQLObject("SCH_BASE_Task").insert(task); try { pointConfirm(task); //下发 }catch (Exception ex){ - log.error("SpeEmpTask#点位确认异常:{}",ex.getMessage()); task.put("task_status", TaskStatusEnum.SURE_START_ERROR.getCode()); task.put("remark",ex.getMessage()); WQLObject.getWQLObject("sch_base_task").update(task); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java index 5ddcdb9e..92eee538 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java @@ -6,7 +6,6 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.InterfaceLogType; @@ -20,17 +19,11 @@ import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.ext.acs.service.impl.AgvInstService; import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; -import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; -import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; -import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; -import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -39,15 +32,11 @@ import java.util.Map; @Slf4j @Service public class SpeFullTask extends AbstractAcsTask { - @Autowired - private IPdmProduceWorkorderService workorderService; - @Autowired - private ISchBaseTaskService taskService; + @Autowired AgvInstService agvInstService; - private final Map SpeHandles= new HashMap<>(); - private static String OPT_NAME = "ACS回调# "; + private static String OPT_NAME = "ACS回调# "; public SpeFullTask() { @@ -74,29 +63,25 @@ public class SpeFullTask extends AbstractAcsTask { @Override @Transactional public String createTask(JSONObject param) { - //{"quantity":5,"workorder_code":230523019,"device_code":"A1_TW_15_6_M","type":"2"} + String point_code = param.getString("device_code"); String quantity = param.getString("quantity"); String type = param.getString("type"); - PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper() - .eq("workorder_code", param.getString("workorder_code")) - .eq("is_delete", false) - .lt("workorder_status", StatusEnum.TASK_FINISH.getCode())); + JSONObject order = WQLObject.getWQLObject("PDM_produce_workOrder").query("workorder_code = '" + param.getString("workorder_code") + "' and is_delete = 0 and workorder_status != "+StatusEnum.TASK_FINISH.getCode()).uniqueResult(0); Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); - List list = taskService.list(new QueryWrapper() - .eq("point_code1", point_code).lt("task_status", StatusEnum.TASK_FINISH.getCode()) - ); - if (!CollectionUtils.isEmpty(list)){ - throw new BadRequestException(String.format("设备%s存在未完成任务", param.getString("device_code"))); + JSONArray chectIndDatabase = WQLObject.getWQLObject("SCH_BASE_Task").query((AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type) ? "point_code1" : "point_code2") + "= '" + point_code + "' and task_status < " + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(chectIndDatabase)){ + Assert.notNull(order, String.format("设备%s存在未完成任务", param.getString("point_code"))); } JSONObject empPoint = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "2", "point_code", point_code, "point_type", StatusEnum.POINT_LOCATION_EMP.getCode())).process().uniqueResult(0); JSONObject form = new JSONObject(MapOf.of("start_point_code",point_code, "next_point_code","","return_point_code", empPoint.getString("point_code"),"vehicle_code", - "","product_area",order.getProduct_area(),"quantity", quantity,"type",type,"material_id", order.getProduct_area())); + "","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id"))); String taskId = IdUtil.getSnowflake(1, 1).nextId() + ""; JSONObject task = packageParam(form, taskId); - taskService.save(task.toJavaObject(SchBaseTask.class)); + WQLObject.getWQLObject("SCH_BASE_Task").insert(task); + try { pointConfirm(task); //下发 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml index 3fccb0be..fa038379 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml @@ -11,7 +11,7 @@ WHERE device.is_delete = '0' - and device.workprocedure_id = #{workprocedure_id} + device.workprocedure_id = #{workprocedure_id} and device.device_code not in ( select o.device_code as device_code diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java index 227eebf0..df9e9713 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java @@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import io.jsonwebtoken.lang.Assert; -import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.nl.common.TableDataInfo; @@ -64,7 +63,6 @@ import java.util.stream.Collectors; * @since 2023-04-26 */ @Service -@Slf4j public class IPdmProduceWorkorderServiceImpl extends ServiceImpl implements IPdmProduceWorkorderService { @Autowired private IMdPbClassstandardService classstandardService; @@ -181,9 +179,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl() .set("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode()) - .set("confirm_id", SecurityUtils.getCurrentUserId()) - .set("confirm_name", SecurityUtils.getCurrentNickName()) - .set("confirm_time", new Date()) + .set("update_id", SecurityUtils.getCurrentUserId()) + .set("update_name", SecurityUtils.getCurrentNickName()) + .set("update_time", new Date()) .in("workorder_id", workorder_id)); JSONArray array = new JSONArray(); JSONObject map = new JSONObject(); @@ -192,7 +190,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl result = wmsToAcsService.orderStatusUpdate(array); if (!HttpStatus.OK.equals(result.get("status"))) { - log.error((String) result.get("message")); + throw new BadRequestException((String) result.get("message")); } this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, workorder_id); } @@ -527,8 +525,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq("workorder_id", param.getString("workorder_id"))); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, result.getWorkorder_id()); return RestBusinessTemplate.execute(() -> resp); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml index 0a847f3f..f2ebbdaf 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml @@ -9,7 +9,7 @@ FROM sch_cacheline_vehilematerial v LEFT JOIN sch_cacheline_position p ON p.vehicle_code = v.vehicle_code - WHERE p.vehicle_code ]]> '' and + WHERE p.vehicle_code != '' and v.vehicle_status = #{vehicle_status} v.material_id = #{material_id} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml index e7034ae8..c4030f11 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml @@ -91,7 +91,7 @@ SELECT dis.*, @@ -91,4 +92,23 @@ order by dis.seq_no ASC + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java new file mode 100644 index 00000000..69262dc2 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java @@ -0,0 +1,646 @@ +package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jetbrains.annotations.NotNull; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.publish.BussEventMulticaster; +import org.nl.common.publish.event.PointEvent; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService; +import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; +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.ISchBaseTaskService; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; +import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpOutService; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisdtlCpService; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdtlCpService; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvCp; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvCpMapper; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery; +import org.nl.wms.storage_manage.productmanage.service.structIvt.IStIvtStructivtCpService; +import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp; +import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil; +import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService; +import org.nl.wms.storage_manage.productmanage.util.RuleUtil; +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.Date; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +/** + *

+ * 出库单主表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-04 + */ +@Service +public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl implements IStIvtIostorinvCpOutService { + + @Autowired + protected IStIvtIostorinvdtlCpService iostorinvdtlCpService; // 成品出入库明细表服务 + + @Autowired + protected IStIvtIostorinvdisCpService iostorinvdisCpService; // 成品出入库分配表服务 + + @Autowired + protected IStIvtIostorinvdisdtlCpService iStIvtIostorinvdisdtlCpService; // 成品出入库分配明细表服务 + + @Autowired + protected IStIvtBsrealstorattrService stIvtBsrealstorattrService; // 实物属性表表服务 + + @Autowired + protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息表服务 + + @Autowired + protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务 + + @Autowired + protected DivRuleCpService divRuleCpService; // 成品分配规则服务类 + + @Autowired + protected IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务 + + @Autowired + private ISchBaseTaskService iSchBaseTaskService; // 任务表服务 + + @Autowired + private ISchBasePointService iSchBasePointService; // 点位服务 + + @Autowired + private IStIvtStructivtCpService iStIvtStructivtCpService; // 库存服务 + + @Autowired + protected IMdPbBucketrecordService iMdPbBucketrecordService; // 包装箱记录表服务 + + @Override + public Object pageQuery(IostorInvQuery query, PageQuery page) { + // 查询条件 + query.setIo_type(IOSEnum.IO_TYPE.code("出库")); + page.setSort("bill_code,DESC"); + + // 分页查询 + Page pageQuery = this.page(page.build(), query.build()); + TableDataInfo build = TableDataInfo.build(pageQuery); + + return build; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(JSONObject form) { + + JSONArray rows = form.getJSONArray("tableData"); + if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空"); + + // 调用主表 插入/更新方法 + StIvtIostorinvCp stIvtIostorinvCp = packageMstForm(new StIvtIostorinvCp(), form, false); + // 插入主表 + this.save(stIvtIostorinvCp); + + // 调用明细表 插入/更新方法 + iostorinvdtlCpService.create(rows, stIvtIostorinvCp.getIostorinv_id()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(JSONObject form) { + + JSONArray rows = form.getJSONArray("tableData"); + if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("明细不能为空"); + + StIvtIostorinvCp iostorinvCp = this.getOne(new QueryWrapper().eq("iostorinv_id", form.getString("iostorinv_id"))); + packageMstForm(iostorinvCp,form,true); + + //创建明细 + iostorinvdtlCpService.create(rows, iostorinvCp.getIostorinv_id()); + // 更新主表 + this.updateById(iostorinvCp); + } + + + @Override + public List getIosInvDtl(JSONObject whereJson) { + // 查询主表明细 + List maps = iostorinvdtlCpService.queryInvDtlByInv(whereJson); + return maps; + } + + @Override + public List getIosInvDis(JSONObject whereJson) { + + // 查询分配表 + List maps = iostorinvdisCpService.queryInvDisByInvOutdtl(whereJson); + return maps; + + } + + + @Override + public void delete(Long[] ids) { + + for (Long id : ids) { + StIvtIostorinvCp dao = this.getOne(new QueryWrapper().eq("iostorinv_id", id)); + dao.setIs_delete(true); + + this.updateById(dao); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void allDivIvt(JSONObject whereJson) { + /* + * 1.查找出所有需要分配的明细 + * 2.找到对应库存 + * 3.插入分配表 + * 4.更新库存冻结数 + * 5.更新仓位为锁定 + * 6.更新明细状态 + * 7.更新主表状态 + */ + + StIvtIostorinvCp mstDao = this.getById(whereJson.getString("iostorinv_id")); + + // 1.查找出所有需要分配的明细 + + List dtlDaoList = new ArrayList<>(); + + if (whereJson.getBoolean("type")) { + dtlDaoList = iostorinvdtlCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + .lt(StIvtIostorinvdtlCp::getBill_status, IOSEnum.BILL_STATUS.code("分配完")) + .orderByAsc(StIvtIostorinvdtlCp::getSeq_no) + ); + } else { + dtlDaoList = iostorinvdtlCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) + .lt(StIvtIostorinvdtlCp::getBill_status, IOSEnum.BILL_STATUS.code("分配完")) + .orderByAsc(StIvtIostorinvdtlCp::getSeq_no) + ); + if (ObjectUtil.isNotEmpty(mstDao)) + mstDao = this.getById(dtlDaoList.get(0).getIostorinv_id()); + } + + if (ObjectUtil.isEmpty(mstDao)) + throw new BadRequestException("没有可分配的库存!"); + + // 2.找库存 + for (StIvtIostorinvdtlCp dtlDao : dtlDaoList) { + double unassign_qty = dtlDao.getUnassign_qty().doubleValue(); + + JSONObject param = new JSONObject(); + param.put("stor_id", whereJson.getString("stor_id")); + param.put("sect_id", whereJson.getString("sect_id")); + param.put("material_id", dtlDao.getMaterial_id()); + param.put("sale_id", dtlDao.getSource_billdtl_id()); + if (ObjectUtil.isEmpty(dtlDao.getSource_billdtl_id())) { + param.put("rule_type", RuleUtil.PRODUCTION_OUT_2); + } else { + param.put("rule_type", RuleUtil.PRODUCTION_OUT_1); + } + + List ivtList = new ArrayList<>(); // 需要更新库存、仓位、插入分配明细的集合 + + while (unassign_qty > 0) { + StIvtStructivtCp ivtDao = divRuleCpService.divRuleOut(param); + + if (ObjectUtil.isEmpty(ivtDao)) throw new BadRequestException("库存不足"); + + // 更新未分配数 + unassign_qty = NumberUtil.sub(unassign_qty,ivtDao.getCanuse_qty().doubleValue()); + ivtList.add(ivtDao); + } + + // 3.插入分配表 + iostorinvdisCpService.onductDataOutDis(ivtList,dtlDao); + + // 4.更新明细状态 + BigDecimal assign_qty = ivtList.stream() + .map(StIvtStructivtCp::getCanuse_qty) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); + dtlDao.setUnassign_qty(BigDecimal.valueOf(0)); + dtlDao.setAssign_qty(assign_qty); + + iostorinvdtlCpService.updateById(dtlDao); + + // 5.更新库存冻结数 、 锁定仓位 + updateIvtDiv(ivtList,mstDao); + + // 6.更新主表 + updateMst(mstDao.getIostorinv_id()); + } + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void allCancel(JSONObject whereJson) { + /* + * 1.查找出所有需要取消分配的明细 + * 2.删除生成状态中的任务 + * 3.更新库存 + * 4.更新仓位 + * 5.删除分配明细 + * 6.更新明细 + * 7.更新主表 + * + */ + // 1.找出所有分配 + List disDaoList = new ArrayList<>(); + if (whereJson.getBoolean("type")) { + disDaoList = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + .orderByAsc(StIvtIostorinvdisCp::getSeq_no) + ); + } else { + disDaoList = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) + .orderByAsc(StIvtIostorinvdisCp::getSeq_no) + ); + } + + if (ObjectUtil.isEmpty(disDaoList)) + throw new BadRequestException("没有可取消的分配!"); + + // 判断是否有已经有正在执行中的任务 + boolean is_create_task = disDaoList.stream() + .anyMatch(row -> Integer.parseInt(row.getWork_status()) > Integer.parseInt(IOSEnum.WORK_STATUS.code("生成"))); + + if (is_create_task) throw new BadRequestException("任务已执行或已完成,不可取消!"); + + // 2.更新库存,删除任务 + for (StIvtIostorinvdisCp disDao : disDaoList) { + // 更新库存、更新仓位 + updateIvtUnDiv(disDao,ChangeIvtUtil.SUBFROZEN_ADDIVT_QTY); + + // 删除任务 + iSchBaseTaskService.update( + new SchBaseTask() + .setIs_delete(true), + new QueryWrapper().lambda() + .eq(SchBaseTask::getTask_id, disDao.getTask_id()) + ); + + // 3.删除分配 + iostorinvdisCpService.removeById(disDao.getIostorinvdis_id()); + } + + // 4.更新明细 + if (!whereJson.getBoolean("type")) { + + StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(whereJson.getString("iostorinvdtl_id")); + dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + dtlDao.setAssign_qty(BigDecimal.valueOf(0)); + dtlDao.setUnassign_qty(dtlDao.getReal_qty()); + + iostorinvdtlCpService.updateById(dtlDao); + + // 5.更新主表 + updateMst(dtlDao.getIostorinv_id()); + } else { + List dtlDaoList = iostorinvdtlCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + for (StIvtIostorinvdtlCp dtlDao : dtlDaoList) { + dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + dtlDao.setAssign_qty(BigDecimal.valueOf(0)); + dtlDao.setUnassign_qty(dtlDao.getReal_qty()); + + iostorinvdtlCpService.updateById(dtlDao); + } + + // 5.更新主表 + updateMst(whereJson.getString("iostorinv_id")); + } + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void setPoint(JSONObject whereJson) { + /* + * 1.生成任务 + * 2.更新分配状态 + */ + // 1.校验是否设置过起点 + StIvtIostorinvdisCp disDao = iostorinvdisCpService.getById(whereJson.getString("iostorinvdis_id")); + + if (ObjectUtil.isNotEmpty(disDao.getPoint_id())) throw new BadRequestException("此明细已生成任务!"); + + // 2.下发任务 + SchBasePoint pointDao = iSchBasePointService.getOne( + new QueryWrapper().lambda() + .eq(SchBasePoint::getPoint_code, whereJson.getString("point_code")) + ); + + PointEvent event = PointEvent.builder() + .type(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_SEND.getCode()) + .point_code1(disDao.getStruct_code()) + .point_code2(pointDao.getPoint_code()) + .callback((Consumer) disDao::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + + // 3.更新分配表 + iostorinvdisCpService.updateById( + disDao.setPoint_id(pointDao.getPoint_id()) + .setPoint_code(pointDao.getPoint_code()) + .setPoint_name(pointDao.getPoint_name()) + .setWork_status(IOSEnum.WORK_STATUS.code("生成")) + ); + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void confirm(JSONObject whereJson) { + // 1.更新主表为完成 + StIvtIostorinvCp mstDao = this.getById(whereJson.getString("iostorinv_id")); + mstDao.setBill_status(IOSEnum.BILL_STATUS.code("完成")); + mstDao.setConfirm_id(SecurityUtils.getCurrentUserId()); + mstDao.setConfirm_name(SecurityUtils.getCurrentNickName()); + mstDao.setConfirm_time(DateUtil.now()); + this.updateById(mstDao); + + // 2.判断所有明细是否为分配完 + List dtlDaoList = iostorinvdtlCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + boolean is_dis = dtlDaoList.stream() + .anyMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配完"))); + + if (!is_dis) throw new BadRequestException("请先分配单据!"); + + // 3.更新明细表为完成 + iostorinvdtlCpService.update( + new StIvtIostorinvdtlCp() + .setBill_status(IOSEnum.BILL_STATUS.code("完成")), + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + // 4.更新任务为完成、更新库存、解锁点位 + List disDaoList = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + for (StIvtIostorinvdisCp dao : disDaoList) { + // 1)更新任务为完成 + SchBaseTask taskDao = iSchBaseTaskService.getById(dao.getTask_id()); + + if (ObjectUtil.isNotEmpty(taskDao)) { + // 更新有任务分配 + if (!StrUtil.equals(taskDao.getTask_id(), TaskStatusEnum.FINISHED.getCode())) { + taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode()); + iSchBaseTaskService.updateById(taskDao); + } + } + + // 2)更新库存 + StIvtIostorinvdtlCp dtlDao = dtlDaoList.stream() + .filter(row -> row.getIostorinvdtl_id().equals(dao.getIostorinvdtl_id())) + .findAny().get(); + iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBFROZEN_SUBIVT_QTY,dtlDao.getSource_billdtl_id())); + + // 3)解锁终点 + unLockNext(dao.getStruct_id()); + + // 4) 更新载具扩展属性 + iMdPbStoragevehicleextService.update( + new MdPbStoragevehicleext() + .setMaterial_id(""), + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleext::getStoragevehicle_code,dao.getStoragevehicle_code()) + ); + } + + } + + @NotNull + private StIvtIostorinvCp packageMstForm(StIvtIostorinvCp stIvtIostorinvCp,JSONObject whereJson,Boolean isUpdate) { + JSONArray rows = whereJson.getJSONArray("tableData"); + if (!isUpdate){ + // 新增 + stIvtIostorinvCp.setIostorinv_id(IdUtil.getStringId()); + stIvtIostorinvCp.setBill_code(CodeUtil.getNewCode("IO_CODE")); + stIvtIostorinvCp.setIo_type(IOSEnum.IO_TYPE.code("出库")); + stIvtIostorinvCp.setBuss_type(whereJson.getString("bill_type")); + stIvtIostorinvCp.setBill_type(stIvtIostorinvCp.getBuss_type()); + stIvtIostorinvCp.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + stIvtIostorinvCp.setCreate_id(SecurityUtils.getCurrentUserId()); + stIvtIostorinvCp.setCreate_name(SecurityUtils.getCurrentNickName()); + stIvtIostorinvCp.setCreate_time(new Date()); + stIvtIostorinvCp.setIs_delete(false); + // TODO 暂时写死 + stIvtIostorinvCp.setSysdeptid("111"); + stIvtIostorinvCp.setSyscompanyid("111"); + }else { + + // 修改 + stIvtIostorinvCp.setUpdate_id(SecurityUtils.getCurrentUserId()); + stIvtIostorinvCp.setUpdate_name(SecurityUtils.getCurrentNickName()); + stIvtIostorinvCp.setUpdate_time(new Date()); + } + + stIvtIostorinvCp.setBiz_date(whereJson.getString("biz_date").substring(0,10)); + // 获取仓库信息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.lambda() + .eq(StIvtBsrealstorattr::getStor_id,whereJson.getString("stor_id")) + .eq(StIvtBsrealstorattr::getIs_used, true); + + StIvtBsrealstorattr bsrealDao = stIvtBsrealstorattrService.getOne(wrapper); + if (ObjectUtil.isEmpty(bsrealDao)) throw new BadRequestException("仓库不存在或未启用!"); + + stIvtIostorinvCp.setStor_id(bsrealDao.getStor_id()); + stIvtIostorinvCp.setStor_code(bsrealDao.getStor_code()); + stIvtIostorinvCp.setStor_name(bsrealDao.getStor_name()); + stIvtIostorinvCp.setTotal_qty(whereJson.getBigDecimal("total_qty")); + stIvtIostorinvCp.setDetail_count(rows.size()); + stIvtIostorinvCp.setRemark(whereJson.getString("remark")); + + return stIvtIostorinvCp; + } + + @NotNull + public void updateMst(String iostorinv_id) { + /* + 更新主表 + */ + + StIvtIostorinvCp mstDao = this.baseMapper.selectOne( + new QueryWrapper().lambda() + .eq(StIvtIostorinvCp::getIostorinv_id, iostorinv_id) + ); + mstDao.setUpdate_id(SecurityUtils.getCurrentUserId()); + mstDao.setUpdate_name(SecurityUtils.getCurrentNickName()); + mstDao.setUpdate_time(new Date()); + mstDao.setDis_id(SecurityUtils.getCurrentUserId()); + mstDao.setDis_name(SecurityUtils.getCurrentNickName()); + mstDao.setDis_time(DateUtil.now()); + + // 查询主表下所有明细 + List dtlDaoList = iostorinvdtlCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinv_id, iostorinv_id) + ); + + // 判断是否都为分配完 + boolean is_true = dtlDaoList + .stream() + .allMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配完"))); + + if (is_true) { + // 更新主表为分配完 + mstDao.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); + } else { + // 更新主表为分配中 + mstDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中")); + } + + // 判断是否为生成 + boolean is_create = dtlDaoList + .stream() + .allMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("生成"))); + + if (is_create) mstDao.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + + this.updateById(mstDao); + } + + private void updateIvtDiv(List ivtList,StIvtIostorinvCp mstDao) { + /* + 入库分配 + 更新库存冻结数 + */ + for (StIvtStructivtCp ivtDao : ivtList) { + // 1.更新库存 + JSONObject param = new JSONObject(); + param.put("struct_id", ivtDao.getStruct_id()); + param.put("material_id", ivtDao.getMaterial_id()); + param.put("pcsn", ivtDao.getPcsn()); + param.put("ivt_level", ivtDao.getIvt_level()); + param.put("quality_scode", ivtDao.getQuality_scode()); + param.put("change_qty", ivtDao.getCanuse_qty()); + param.put("sale_id", ivtDao.getSale_id()); + param.put("change_type", ChangeIvtUtil.ADDFROZEN_SUBIVT_QTY); + iStIvtStructivtCpService.UpdateIvt(param); + + // 2.锁定仓位 + iStIvtStructattrService.update( + new StIvtStructattr() + .setLock_type("01") // TODO 暂时写死 + .setInv_id(mstDao.getIostorinv_id()) + .setInv_type(mstDao.getBill_type()) + .setInv_code(mstDao.getBill_code()), + new QueryWrapper().lambda() + .eq(StIvtStructattr::getStruct_id, ivtDao.getStruct_id()) + ); + } + } + + private void updateIvtUnDiv(StIvtIostorinvdisCp dao, String type) { + /* + 出库取消 + 更新库存冻结数 + */ + StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(dao.getIostorinvdtl_id()); + + // 更新库存 + JSONObject param = new JSONObject(); + param.put("struct_id", dao.getStruct_id()); + param.put("material_id", dao.getMaterial_id()); + param.put("pcsn", dao.getPcsn()); + param.put("ivt_level", dao.getIvt_level()); + param.put("quality_scode", dao.getQuality_scode()); + param.put("change_qty", dao.getReal_qty()); + param.put("sale_id", dtlDao.getSource_billdtl_id()); + param.put("change_type", type); + iStIvtStructivtCpService.UpdateIvt(param); + + // 解锁仓位 + iStIvtStructattrService.update( + new StIvtStructattr() + .setLock_type("1") // TODO 暂时写死 + .setInv_id("") + .setInv_type("") + .setInv_code(""), + new QueryWrapper().lambda() + .eq(StIvtStructattr::getStruct_id, dao.getStruct_id()) + ); + } + + + public JSONObject ivtDataParam(StIvtIostorinvdisCp disDao,String change_type,String sale_id) { + JSONObject ivtParam = new JSONObject(); + ivtParam.put("struct_id", disDao.getStruct_id()); + ivtParam.put("material_id", disDao.getMaterial_id()); + ivtParam.put("pcsn", disDao.getPcsn()); + ivtParam.put("quality_scode", disDao.getQuality_scode()); + ivtParam.put("ivt_level", disDao.getIvt_level()); + ivtParam.put("change_qty", disDao.getReal_qty()); + ivtParam.put("change_type", change_type); + ivtParam.put("sale_id", sale_id); + + return ivtParam; + } + + public void unLockNext(String struct_id) { + + StIvtStructattr attrDao = iStIvtStructattrService.getById(struct_id); + if (ObjectUtil.isEmpty(attrDao)) throw new BadRequestException("仓位不存在!"); + + attrDao.setInv_code(""); + attrDao.setInv_type(""); + attrDao.setInv_id(""); + attrDao.setStoragevehicle_code(""); + attrDao.setLock_type("1"); + iStIvtStructattrService.updateById(attrDao); + + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java index 7d72874b..6d69a24a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java @@ -19,8 +19,10 @@ import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService; import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService; import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService; +import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord; import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext; import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService; @@ -34,8 +36,6 @@ import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM; import org.nl.wms.storage_manage.IOSEnum; -import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowDto; -import org.nl.wms.storage_manage.basedata.service.record.service.IStIvtStructivtflowService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisdtlCpService; @@ -46,6 +46,8 @@ import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostor import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvCpMapper; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery; +import org.nl.wms.storage_manage.productmanage.service.structIvt.IStIvtStructivtCpService; +import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil; import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService; import org.nl.wms.storage_manage.productmanage.util.RuleUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -94,20 +96,23 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl pageQuery = this.page(page.build(), query.build()); @@ -231,7 +236,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdisCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id")) + .eq(StIvtIostorinvdisCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id")) ); if (ObjectUtil.isEmpty(disDao)) throw new BadRequestException("分配明细不存在!"); @@ -410,35 +420,38 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id,disDao.getIostorinvdis_id()) + .eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id,disDao.getIostorinvdis_id()) ); // 3.更新任务 iSchBaseTaskService.update( new SchBaseTask().setIs_delete(true), new QueryWrapper().lambda() - .eq(SchBaseTask::getTask_id, disDao.getTask_id()) - .lt(SchBaseTask::getTask_status, TaskStatusEnum.ISSUE.getCode()) + .eq(SchBaseTask::getTask_id, disDao.getTask_id()) + .lt(SchBaseTask::getTask_status, TaskStatusEnum.ISSUE.getCode()) ); // 解锁货位 iStIvtStructattrService.update( new StIvtStructattr() - .setLock_type("1") // TODO 暂时写死 - .setInv_code("") - .setInv_type("") - .setInv_id(""), + .setLock_type("1") // TODO 暂时写死 + .setInv_code("") + .setInv_type("") + .setInv_id(""), new QueryWrapper().lambda() - .eq(StIvtStructattr::getStruct_code, disDao.getStruct_code()) + .eq(StIvtStructattr::getStruct_code, disDao.getStruct_code()) ); + // 更新库存 + iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.SUBWAREHOUSING_QTY,null)); + // 4.更新分配 iostorinvdisCpService.updateById( disDao.setStruct_name("").setStruct_code("") @@ -446,6 +459,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl) disDao::setTask_id) .build(); BussEventMulticaster.Publish(event); @@ -499,8 +513,9 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + .eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) ); - // 3.更新任务为完成、更新库存 + // 4.更新箱记录表状态为入库 + List disDtlList = iStIvtIostorinvdisdtlCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + for (StIvtIostorinvdisdtlCp disDtlDao : disDtlList) { + // 更新箱记录表 + iMdPbBucketrecordService.update( + MdPbBucketrecord.builder() + .status("03") // TODO 暂时写死 + .instor_optid(Long.getLong(SecurityUtils.getCurrentUserId())) + .instor_optname(SecurityUtils.getCurrentNickName()) + .instor_time(DateUtil.now()) + .build(), + new QueryWrapper().lambda() + .eq(MdPbBucketrecord::getBucketunique, disDtlDao.getBucketunique()) + ); + } + + // 5.更新任务为完成、更新库存、解锁点位 List disDaoList = iostorinvdisCpService.list( new QueryWrapper().lambda() .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) ); - Map> collect = disDaoList.stream() - .collect(Collectors.groupingBy(StIvtIostorinvdisCp::getTask_id)); - - for (String task_id : collect.keySet()) { + for (StIvtIostorinvdisCp dao : disDaoList) { // 1)更新任务为完成 - SchBaseTask taskDao = iSchBaseTaskService.getById(task_id); - // 已完成则不更新 - if (StrUtil.equals(taskDao.getTask_id(), TaskStatusEnum.FINISHED.getCode())) continue; + SchBaseTask taskDao = iSchBaseTaskService.getById(dao.getTask_id()); - taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode()); - iSchBaseTaskService.updateById(taskDao); + if (ObjectUtil.isNotEmpty(taskDao)) { + // 更新有任务分配 + if (!StrUtil.equals(taskDao.getTask_id(), TaskStatusEnum.FINISHED.getCode())) { + taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode()); + iSchBaseTaskService.updateById(taskDao); + } + } // 2)更新库存 - List disList = collect.get(task_id); - for (StIvtIostorinvdisCp dao : disList) { - // 根据托盘对应货位更新 - structivtflowService.recordStructivtFlow( - StIvtStructivtflowDto.builder() - .bill_code(mstDao.getBill_code()) - .change_type_scode(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_SEND) - .bill_table("st_ivt_iostorinv_cp") - .material_id(dao.getMaterial_id()) - .pcsn(dao.getPcsn()) - .struct_code(dao.getStruct_code()) - .result_qty(dao.getReal_qty()) - .change_qty(dao.getReal_qty()) - .task_id(dao.getTask_id()) - .storagevehicle_code(dao.getStoragevehicle_code()) - .build() - ); - } + iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY,null)); + + // 3)解锁终点 + unLockNext(dao.getStruct_id(),dao.getStoragevehicle_code()); } } @@ -595,7 +616,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) + .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) ); // 3.更新明细表 @@ -663,11 +684,11 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) + .eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) ); // 4.更新主表 @@ -721,4 +742,35 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl list) { if (!CollectionUtils.isEmpty(list)){ @@ -57,6 +65,11 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl queryInvDisByInvOutdtl(Map map) { + return baseMapper.queryInvDisByInvOutdtl(map); + } + @Override public List onductDataDis(List list, JSONObject json) { List result = new ArrayList<>(); @@ -113,4 +126,42 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl list, StIvtIostorinvdtlCp dtlDao) { + + for (StIvtStructivtCp ivtDao : list) { + + StIvtStructattr attrDao = iStIvtStructattrService.getById(ivtDao.getStruct_id()); + + MdPbMeasureunit untiDao = iMdPbMeasureunitService.getById(ivtDao.getQty_unit_id()); + + StIvtIostorinvdisCp disDao = new StIvtIostorinvdisCp() + .setIostorinvdis_id(IdUtil.getStringId()) + .setIostorinvdtl_id(dtlDao.getIostorinvdtl_id()) + .setIostorinv_id(dtlDao.getIostorinv_id()) + .setSeq_no(1) + .setSect_id(attrDao.getSect_id()) + .setSect_code(attrDao.getSect_code()) + .setSect_name(attrDao.getSect_name()) + .setStruct_id(attrDao.getStruct_id()) + .setStruct_code(attrDao.getStruct_code()) + .setStruct_name(attrDao.getStruct_name()) + .setMaterial_id(ivtDao.getMaterial_id()) + .setPcsn(ivtDao.getPcsn()) + .setQuality_scode(ivtDao.getQuality_scode()) // TODO 暂时写 + .setIvt_level(ivtDao.getIvt_level()) // TODO 暂时写 + .setIs_active(true) + .setWork_status("00") // TODO 暂时写 + .setStoragevehicle_code(attrDao.getStoragevehicle_code()) + .setIs_issued(false) + .setQty_unit_id(untiDao.getMeasure_unit_id()) + .setQty_unit_name(untiDao.getUnit_name()) + .setPlan_qty(ivtDao.getCanuse_qty()) + .setReal_qty(ivtDao.getCanuse_qty()); + + this.save(disDao); + } + + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdisdtlCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdisdtlCpServiceImpl.java index f337e296..fad48322 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdisdtlCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdisdtlCpServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; +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.service.vehicle.IMdPbBucketrecordService; import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService; import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService; @@ -44,6 +46,10 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl list) { if (!CollectionUtils.isEmpty(list)){ @@ -67,13 +73,18 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl().lambda() + .eq(MdMeMaterialbase::getMaterial_code, item.getString("material_code")) + ); + StIvtIostorinvdisdtlCp disDtlDao = new StIvtIostorinvdisdtlCp() .setIostorinv_id(json.getString("iostorinv_id")) .setIostorinvdtl_id(json.getString("iostorinvdtl_id")) .setIostorinvdis_id(json.getString("iostorinvdis_id")) .setIostorinvdisdtl_id(IdUtil.getStringId()) .setSeq_no(new BigDecimal(1)) - .setMaterial_id(item.getString("material_id")) + .setMaterial_id(mataDao.getMaterial_id()) .setPcsn(item.getString("pcsn")) .setQuality_scode("00") // TODO 暂时写 .setIvt_level("01") // TODO 暂时写 @@ -88,16 +99,17 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl().eq("bucketunique", item.getString("bucketunique")) + MdPbBucketrecord.builder() + .storagevehicle_id(Long.getLong(vehicleDao.getStoragevehicle_id())) + .status("02") // TODO 暂时写死 + .storagevehicle_code(vehicleDao.getStoragevehicle_code()) + .instor_optid(Long.getLong(SecurityUtils.getCurrentUserId())) + .instor_optname(SecurityUtils.getCurrentNickName()) + .instor_time(DateUtil.now()) + .build(), + new QueryWrapper() + .eq("bucketunique", item.getString("bucketunique")) ); }); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdtlCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdtlCpServiceImpl.java index 42adae4b..81a0a8d9 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdtlCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdtlCpServiceImpl.java @@ -1,11 +1,14 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService; import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import org.nl.wms.storage_manage.IOSEnum; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdtlCpService; @@ -61,11 +64,20 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl().eq("iostorinv_id", iostorinvCp_id)); for (int i = 0; i < rows.size(); i++) { + JSONObject json = rows.getJSONObject(i); StIvtIostorinvdtlCp row = rows.getJSONObject(i).toJavaObject(StIvtIostorinvdtlCp.class); + MdMeMaterialbase materDao = materialbaseService.getOne( + new QueryWrapper().lambda() + .eq(MdMeMaterialbase::getMaterial_code, json.getString("material_code")) + ); + row.setIostorinv_id(iostorinvCp_id); + row.setMaterial_id(materDao.getMaterial_id()); row.setIostorinvdtl_id(org.nl.common.utils.IdUtil.getStringId()); row.setSeq_no(i+1); + row.setPcsn(DateUtil.today()); row.setIs_active(true); + row.setIvt_level("01"); // TODO 暂时写死 row.setBill_status(IOSEnum.BILL_STATUS.code("生成")); row.setReal_qty(row.getPlan_qty()); row.setUnassign_qty(row.getPlan_qty()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/IStIfDeliveryorderCpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/IStIfDeliveryorderCpService.java index df8a874a..06a5377d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/IStIfDeliveryorderCpService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/IStIfDeliveryorderCpService.java @@ -1,7 +1,9 @@ package org.nl.wms.storage_manage.productmanage.service.moreOrLess; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.storage_manage.productmanage.service.moreOrLess.dao.StIfDeliveryorderCp; +import org.nl.wms.storage_manage.productmanage.service.moreOrLess.dto.DeliveQuery; /** *

@@ -13,4 +15,6 @@ import org.nl.wms.storage_manage.productmanage.service.moreOrLess.dao.StIfDelive */ public interface IStIfDeliveryorderCpService extends IService { + Object pageQuery(DeliveQuery query, PageQuery page); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dao/mapper/StIfDeliveryorderCpMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dao/mapper/StIfDeliveryorderCpMapper.java index 2c6490d6..722c0317 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dao/mapper/StIfDeliveryorderCpMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dao/mapper/StIfDeliveryorderCpMapper.java @@ -1,7 +1,13 @@ package org.nl.wms.storage_manage.productmanage.service.moreOrLess.dao.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.storage_manage.productmanage.service.moreOrLess.dao.StIfDeliveryorderCp; +import org.nl.wms.storage_manage.productmanage.service.moreOrLess.dto.DeliveQuery; + +import java.util.List; +import java.util.Map; /** *

@@ -13,4 +19,6 @@ import org.nl.wms.storage_manage.productmanage.service.moreOrLess.dao.StIfDelive */ public interface StIfDeliveryorderCpMapper extends BaseMapper { + List pageQuery(@Param("query") DeliveQuery query, @Param("pageQuery") PageQuery pageQuery); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dao/mapper/StIfDeliveryorderCpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dao/mapper/StIfDeliveryorderCpMapper.xml index 67ca91a9..0585ae13 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dao/mapper/StIfDeliveryorderCpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dao/mapper/StIfDeliveryorderCpMapper.xml @@ -2,4 +2,36 @@ + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dto/DeliveQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dto/DeliveQuery.java new file mode 100644 index 00000000..05170918 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dto/DeliveQuery.java @@ -0,0 +1,33 @@ +package org.nl.wms.storage_manage.productmanage.service.moreOrLess.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.common.domain.query.QParam; +import org.nl.common.enums.QueryTEnum; +import org.nl.wms.storage_manage.productmanage.service.moreOrLess.dao.StIfDeliveryorderCp; + +/* + * @author ZZQ + * @Date 2023/5/4 19:49 + */ +@Data +public class DeliveQuery extends BaseQuery { + + + private String deliver_code; + + private String material_code; + + private String status; + + private String cust_code; + + private String sale_code; + + @Override + public void paramMapping() { + super.doP.put("deliver_code", QParam.builder().k(new String[]{"deliver_code"}).type(QueryTEnum.LK).build()); + } + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/impl/StIfDeliveryorderCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/impl/StIfDeliveryorderCpServiceImpl.java index 42e13779..c087f3b5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/impl/StIfDeliveryorderCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/impl/StIfDeliveryorderCpServiceImpl.java @@ -1,11 +1,19 @@ package org.nl.wms.storage_manage.productmanage.service.moreOrLess.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.storage_manage.productmanage.service.moreOrLess.IStIfDeliveryorderCpService; import org.nl.wms.storage_manage.productmanage.service.moreOrLess.dao.StIfDeliveryorderCp; import org.nl.wms.storage_manage.productmanage.service.moreOrLess.dao.mapper.StIfDeliveryorderCpMapper; +import org.nl.wms.storage_manage.productmanage.service.moreOrLess.dto.DeliveQuery; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; + /** *

* 销售发货单表 服务实现类 @@ -17,4 +25,12 @@ import org.springframework.stereotype.Service; @Service public class StIfDeliveryorderCpServiceImpl extends ServiceImpl implements IStIfDeliveryorderCpService { + @Override + public Object pageQuery(DeliveQuery query, PageQuery pageQuery) { + Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); + List mst_detail = baseMapper.pageQuery(query, pageQuery); + TableDataInfo build = TableDataInfo.build(mst_detail); + build.setTotalElements(page.getTotal()); + return build; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/IStIvtStructivtCpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/IStIvtStructivtCpService.java index 4f2b5ba0..84f7faf0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/IStIvtStructivtCpService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/IStIvtStructivtCpService.java @@ -1,5 +1,6 @@ package org.nl.wms.storage_manage.productmanage.service.structIvt; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp; @@ -13,4 +14,27 @@ import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStruct */ public interface IStIvtStructivtCpService extends IService { + /** + * 成品库存更新 + * @param json + * { + * struct_id:仓位标识 + * material_id:物料标识 + * pcsn:批次 + * quality_scode:品质类型 + * ivt_level:库存等级 + * change_qty:变动数量 + * change_type:变动类型 + * sale_id: 生产订单标识 + * } + */ + void UpdateIvt(JSONObject json); + + /** + * 获取一个库存 + * @param json / + * @return StIvtStructivtCp + */ + StIvtStructivtCp queryIvtOutOne(JSONObject json); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/StIvtStructivtCp.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/StIvtStructivtCp.java index 71c89e21..fb3a2e03 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/StIvtStructivtCp.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/StIvtStructivtCp.java @@ -1,5 +1,6 @@ package org.nl.wms.storage_manage.productmanage.service.structIvt.dao; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; @@ -25,6 +26,7 @@ public class StIvtStructivtCp implements Serializable { /** * 库存记录标识 */ + @TableId private String stockrecord_id; /** diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.java index 3b000626..1de94427 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.java @@ -1,5 +1,6 @@ package org.nl.wms.storage_manage.productmanage.service.structIvt.dao.mapper; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp; @@ -13,4 +14,6 @@ import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStruct */ public interface StIvtStructivtCpMapper extends BaseMapper { + StIvtStructivtCp queryIvtOutOne(JSONObject json); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.xml index 364ac3b4..ba94f130 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.xml @@ -2,4 +2,28 @@ + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java index 0c942fe7..d194f899 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java @@ -1,10 +1,27 @@ package org.nl.wms.storage_manage.productmanage.service.structIvt.impl; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; import org.nl.wms.storage_manage.productmanage.service.structIvt.IStIvtStructivtCpService; import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp; import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.mapper.StIvtStructivtCpMapper; +import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil; +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; /** *

@@ -17,4 +34,305 @@ import org.springframework.stereotype.Service; @Service public class StIvtStructivtCpServiceImpl extends ServiceImpl implements IStIvtStructivtCpService { + @Autowired + protected IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务 + + @Autowired + protected IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务 + + @Override + @Transactional(rollbackFor = Exception.class) + public void UpdateIvt(JSONObject json) { + // 校验数据 + checkParam(json); + + String change_type = json.getString("change_type"); // 变动类型 + + switch (change_type) { + case ChangeIvtUtil.ADDWAREHOUSING_QTY: + // 加待入 + addWrehousingQty(json); + break; + case ChangeIvtUtil.SUBWAREHOUSING_QTY: + // 减待入 + subWrehousingQty(json); + break; + case ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY: + // 减待入、加库存、加可用 + subWrehousingAddQty(json); + break; + case ChangeIvtUtil.ADDFROZEN_SUBIVT_QTY: + // 加冻结、减可用 + addFrozenSubQty(json); + break; + case ChangeIvtUtil.SUBFROZEN_ADDIVT_QTY: + // 减冻结、加可用 + subFrozenAddQty(json); + break; + case ChangeIvtUtil.SUBFROZEN_SUBIVT_QTY: + // 减冻结、减库存 + subFrozenSubQty(json); + break; + default: + throw new BadRequestException("变动类型异常!"); + } + + + } + + @Override + public StIvtStructivtCp queryIvtOutOne(JSONObject json) { + return baseMapper.queryIvtOutOne(json); + } + + /* + 加待入 + */ + private void addWrehousingQty(JSONObject json) { + + // 查询是否有库存 + StIvtStructivtCp ivtDao = this.getOne( + new QueryWrapper().lambda() + .eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id")) + .eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id")) + .eq(StIvtStructivtCp::getPcsn, json.getString("pcsn")) + ); + + if (ObjectUtil.isEmpty(ivtDao)) { + // 为空插入 + StIvtStructattr attrDao = iStIvtStructattrService.getById(json.getString("struct_id")); + + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(json.getString("material_id")); + + StIvtStructivtCp dao = new StIvtStructivtCp(); + dao.setStockrecord_id(org.nl.common.utils.IdUtil.getStringId()); + dao.setStruct_id(attrDao.getStruct_id()); + dao.setStruct_code(attrDao.getStruct_code()); + dao.setStruct_name(attrDao.getStruct_name()); + dao.setMaterial_id(materDao.getMaterial_id()); + dao.setQuality_scode(json.getString("quality_scode")); + dao.setIvt_level(json.getString("ivt_level")); + dao.setIs_active(true); + dao.setPcsn(json.getString("pcsn")); + dao.setCanuse_qty(BigDecimal.valueOf(0)); + dao.setFrozen_qty(BigDecimal.valueOf(0)); + dao.setIvt_qty(BigDecimal.valueOf(0)); + dao.setWarehousing_qty(json.getBigDecimal("change_qty")); + dao.setQty_unit_id(materDao.getBase_unit_id()); + dao.setSale_id(json.getString("sale_id")); + this.save(dao); + + } else { + // 更新待入数 + ivtDao.setWarehousing_qty(NumberUtil.add(ivtDao.getWarehousing_qty(),json.getDoubleValue("change_qty"))); + this.updateById(ivtDao); + } + } + + /* + 减待入 + */ + private void subWrehousingQty(JSONObject json) { + + // 查询是否有库存 + StIvtStructivtCp ivtDao = this.getOne( + new QueryWrapper().lambda() + .eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id")) + .eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id")) + .eq(StIvtStructivtCp::getPcsn, json.getString("pcsn")) + ); + + if (ObjectUtil.isEmpty(ivtDao)) { + // 为空报错 + throw new BadRequestException("库存不存在,请检查!"); + } else { + // 判断库存是否异常 + double change_qty = NumberUtil.sub(ivtDao.getWarehousing_qty(), json.getDoubleValue("change_qty")).doubleValue(); + + if (change_qty < 0) { + throw new BadRequestException("库存异常,请检查!"); + } else if (change_qty == 0 && ivtDao.getCanuse_qty().doubleValue() == 0 && + ivtDao.getFrozen_qty().doubleValue() == 0 && ivtDao.getIvt_qty().doubleValue() == 0) { + // 待入数、库存数、冻结数、可用数都为0时删除库存记录 + this.removeById(ivtDao.getStockrecord_id()); + } else { + ivtDao.setWarehousing_qty(BigDecimal.valueOf(change_qty)); + this.updateById(ivtDao); + } + } + } + + /* + 减待入、加库存、加可用 + */ + private void subWrehousingAddQty(JSONObject json) { + // 查询是否有库存 + StIvtStructivtCp ivtDao = this.getOne( + new QueryWrapper().lambda() + .eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id")) + .eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id")) + .eq(StIvtStructivtCp::getPcsn, json.getString("pcsn")) + ); + + if (ObjectUtil.isEmpty(ivtDao)) { + throw new BadRequestException("库存不存在,请检查!"); + } else { + double change_qty = NumberUtil.sub(ivtDao.getWarehousing_qty(), json.getDoubleValue("change_qty")).doubleValue(); + + // 判断待入数是否为负数 + if (change_qty < 0) throw new BadRequestException("库存异常,请检查!"); + // 减去待入 + ivtDao.setWarehousing_qty(BigDecimal.valueOf(change_qty)); + // 加库存 + BigDecimal ivt_qty = NumberUtil.add(ivtDao.getIvt_qty(), json.getDoubleValue("change_qty")); + // 加可用 + BigDecimal canuse_qty = NumberUtil.add(ivtDao.getCanuse_qty(), json.getDoubleValue("change_qty")); + + ivtDao.setCanuse_qty(canuse_qty); + ivtDao.setIvt_qty(ivt_qty); + ivtDao.setInstorage_time(DateUtil.now()); + this.updateById(ivtDao); + } + } + + /* + 加冻结、减可用 + */ + private void addFrozenSubQty(JSONObject json) { + // 找到对应库存 + StIvtStructivtCp ivtDao = new StIvtStructivtCp(); + if (ObjectUtil.isEmpty(json.getString("sale_id"))) { + ivtDao = this.getOne( + new QueryWrapper().lambda() + .eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id")) + .eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id")) + .eq(StIvtStructivtCp::getPcsn, json.getString("pcsn")) + ); + } else { + ivtDao = this.getOne( + new QueryWrapper().lambda() + .eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id")) + .eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id")) + .eq(StIvtStructivtCp::getSale_id,json.getString("sale_id")) + ); + } + + if (ObjectUtil.isEmpty(ivtDao)) throw new BadRequestException("库存异常,请检查!"); + + // 冻结数 + double frozen_qty = NumberUtil.add(ivtDao.getFrozen_qty().doubleValue(), json.getDoubleValue("change_qty")); + // 可用数 + double canuse_qty = NumberUtil.sub(ivtDao.getCanuse_qty().doubleValue(), json.getDoubleValue("change_qty")); + + if (canuse_qty < 0) throw new BadRequestException("库存异常,请检查!"); + + ivtDao.setCanuse_qty(BigDecimal.valueOf(canuse_qty)); + ivtDao.setFrozen_qty(BigDecimal.valueOf(frozen_qty)); + this.updateById(ivtDao); + } + + /* + 减冻结、加可用 + */ + private void subFrozenAddQty(JSONObject json) { + // 找到对应库存 + StIvtStructivtCp ivtDao = new StIvtStructivtCp(); + if (ObjectUtil.isEmpty(json.getString("sale_id"))) { + ivtDao = this.getOne( + new QueryWrapper().lambda() + .eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id")) + .eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id")) + .eq(StIvtStructivtCp::getPcsn, json.getString("pcsn")) + ); + } else { + ivtDao = this.getOne( + new QueryWrapper().lambda() + .eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id")) + .eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id")) + .eq(StIvtStructivtCp::getSale_id,json.getString("sale_id")) + ); + } + + if (ObjectUtil.isEmpty(ivtDao)) throw new BadRequestException("库存异常,请检查!"); + + // 冻结数 + double frozen_qty = NumberUtil.sub(ivtDao.getFrozen_qty().doubleValue(), json.getDoubleValue("change_qty")); + // 可用数 + double canuse_qty = NumberUtil.add(ivtDao.getCanuse_qty().doubleValue(), json.getDoubleValue("change_qty")); + + if (frozen_qty < 0) throw new BadRequestException("库存异常,请检查!"); + + ivtDao.setCanuse_qty(BigDecimal.valueOf(canuse_qty)); + ivtDao.setFrozen_qty(BigDecimal.valueOf(frozen_qty)); + this.updateById(ivtDao); + + } + + /* + 减冻结、减库存 + */ + private void subFrozenSubQty(JSONObject json) { + // 找到对应库存 + StIvtStructivtCp ivtDao = new StIvtStructivtCp(); + if (ObjectUtil.isEmpty(json.getString("sale_id"))) { + ivtDao = this.getOne( + new QueryWrapper().lambda() + .eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id")) + .eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id")) + .eq(StIvtStructivtCp::getPcsn, json.getString("pcsn")) + ); + } else { + ivtDao = this.getOne( + new QueryWrapper().lambda() + .eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id")) + .eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id")) + .eq(StIvtStructivtCp::getSale_id,json.getString("sale_id")) + ); + } + + if (ObjectUtil.isEmpty(ivtDao)) throw new BadRequestException("库存异常,请检查!"); + + // 冻结数 + double frozen_qty = NumberUtil.sub(ivtDao.getFrozen_qty().doubleValue(), json.getDoubleValue("change_qty")); + // 库存数 + double ivt_qty = NumberUtil.sub(ivtDao.getIvt_qty().doubleValue(), json.getDoubleValue("change_qty")); + + if (frozen_qty < 0) throw new BadRequestException("库存异常,请检查!"); + + if (frozen_qty == 0 && ivtDao.getCanuse_qty().doubleValue() == 0 && ivt_qty == 0 && ivtDao.getWarehousing_qty().doubleValue() == 0) { + // 删除 + this.removeById(ivtDao.getStockrecord_id()); + } else { + ivtDao.setFrozen_qty(BigDecimal.valueOf(frozen_qty)); + ivtDao.setIvt_qty(BigDecimal.valueOf(ivt_qty)); + this.updateById(ivtDao); + } + } + + /* + 校验数据 + */ + private void checkParam(JSONObject json) { + + if (ObjectUtil.isEmpty(json.getString("struct_id"))) + throw new BadRequestException("更新库存失败:仓位不能为空!"); + + if (ObjectUtil.isEmpty(json.getString("material_id"))) + throw new BadRequestException("更新库存失败:物料不能为空!"); + + if (ObjectUtil.isEmpty(json.getString("pcsn"))) + throw new BadRequestException("更新库存失败:批次不能为空!"); + + if (ObjectUtil.isEmpty(json.getString("quality_scode"))) + throw new BadRequestException("更新库存失败:品质类型不能为空!"); + + if (ObjectUtil.isEmpty(json.getString("ivt_level"))) + throw new BadRequestException("更新库存失败:库存等级不能为空!"); + + if (ObjectUtil.isEmpty(json.getString("change_qty"))) + throw new BadRequestException("更新库存失败:变动数量不能为空!"); + + if (ObjectUtil.isEmpty(json.getString("change_type"))) + throw new BadRequestException("更新库存失败:变动类型不能为空!"); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/ChangeIvtUtil.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/ChangeIvtUtil.java new file mode 100644 index 00000000..c6a43193 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/ChangeIvtUtil.java @@ -0,0 +1,36 @@ +package org.nl.wms.storage_manage.productmanage.util; + +public class ChangeIvtUtil { + + /* + * 加待入 + */ + public static final String ADDWAREHOUSING_QTY = "1"; + + /* + * 减待入 + */ + public static final String SUBWAREHOUSING_QTY = "2"; + + /* + * 减待入、加库存、加可用 + */ + public static final String SUBWAREHOUSING_ADDIVT_QTY = "3"; + + /* + * 加冻结、减可用 + */ + public static final String ADDFROZEN_SUBIVT_QTY = "4"; + + /* + * 减冻结、加可用 + */ + public static final String SUBFROZEN_ADDIVT_QTY = "5"; + + /* + * 减冻结、减库存 + */ + public static final String SUBFROZEN_SUBIVT_QTY = "6"; + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/DivRuleCpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/DivRuleCpService.java index 280b6817..ddd05476 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/DivRuleCpService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/DivRuleCpService.java @@ -2,6 +2,7 @@ package org.nl.wms.storage_manage.productmanage.util; import com.alibaba.fastjson.JSONObject; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp; /** *

@@ -17,11 +18,25 @@ public interface DivRuleCpService { * 入库分配规则 * @param whereJson * { - * "stor_id":仓库标识 - * "sect_id":库区标识 - * "rule_type":规则类型(后续优化) + * "stor_id":仓库标识 N + * "sect_id":库区标识 N + * "rule_type":规则类型(后续优化) N * } * @return StIvtStructattr / */ StIvtStructattr divRuleIn(JSONObject whereJson); + + /** + * 出库分配规则 + * @param whereJson + * { + * "stor_id":仓库标识 N + * "sect_id":库区标识 N + * "material_id":物料标识 Y + * "sale_id": 销售单标识 Y + * "rule_type":规则类型(后续优化) N + * } + * @return StIvtStructattr / + */ + StIvtStructivtCp divRuleOut(JSONObject whereJson); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/RuleUtil.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/RuleUtil.java index 91bfeede..0be2a461 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/RuleUtil.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/RuleUtil.java @@ -3,9 +3,22 @@ package org.nl.wms.storage_manage.productmanage.util; public class RuleUtil { /* + * 入库分配: * 按照仓位顺序找一个仓位 */ - public static final String PRODUCTION_IN = "1"; + public static final String PRODUCTION_IN_1 = "in_1"; + + /* + * 出库分配: + * 根据 仓库、库区、物料、销售单找库存 + */ + public static final String PRODUCTION_OUT_1 = "out_1"; + + /* + * 出库分配: + * 根据 仓库、库区、物料找库存 + */ + public static final String PRODUCTION_OUT_2 = "out_2"; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/impl/DivRuleCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/impl/DivRuleCpServiceImpl.java index c87e99be..a0fe0d73 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/impl/DivRuleCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/impl/DivRuleCpServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.nl.modules.common.exception.BadRequestException; 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.storage_manage.productmanage.service.structIvt.IStIvtStructivtCpService; +import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp; import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService; import org.nl.wms.storage_manage.productmanage.util.RuleUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -25,8 +27,13 @@ public class DivRuleCpServiceImpl implements DivRuleCpService { @Autowired protected IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务 + @Autowired + protected IStIvtStructivtCpService iStIvtStructivtCpService; // 仓位库存服务 + private StIvtStructattr attrDao; + private StIvtStructivtCp ivtDao; + @Override public StIvtStructattr divRuleIn(JSONObject whereJson) { @@ -37,7 +44,7 @@ public class DivRuleCpServiceImpl implements DivRuleCpService { if (ObjectUtil.isEmpty(sect_id)) throw new BadRequestException("库区不能为空!"); switch (whereJson.getString("rule_type")) { - case RuleUtil.PRODUCTION_IN : + case RuleUtil.PRODUCTION_IN_1 : attrDao = iStIvtStructattrService.getOne( new QueryWrapper().lambda() .eq(StIvtStructattr::getStor_id, stor_id) @@ -46,10 +53,38 @@ public class DivRuleCpServiceImpl implements DivRuleCpService { .eq(StIvtStructattr::getIs_used, "1") //TODO 暂时写死 .eq(StIvtStructattr::getLock_type, "1") //TODO 暂时写死 .orderByAsc(StIvtStructattr::getStruct_code) - ,false); + ,false); break; } return attrDao; } + + @Override + public StIvtStructivtCp divRuleOut(JSONObject whereJson) { + + String stor_id = whereJson.getString("stor_id"); + String sect_id = whereJson.getString("sect_id"); + + if (ObjectUtil.isEmpty(stor_id)) throw new BadRequestException("仓库不能为空!"); + if (ObjectUtil.isEmpty(sect_id)) throw new BadRequestException("库区不能为空!"); + + switch (whereJson.getString("rule_type")) { + case RuleUtil.PRODUCTION_OUT_1 : + if (ObjectUtil.isEmpty(whereJson.getString("material_id"))) + throw new BadRequestException("物料不能为空"); + if (ObjectUtil.isEmpty(whereJson.getString("sale_id"))) + throw new BadRequestException("销售单不能为空"); + ivtDao = iStIvtStructivtCpService.queryIvtOutOne(whereJson); + break; + case RuleUtil.PRODUCTION_OUT_2 : + if (ObjectUtil.isEmpty(whereJson.getString("material_id"))) + throw new BadRequestException("物料不能为空"); + ivtDao = iStIvtStructivtCpService.queryIvtOutOne(whereJson); + break; + } + + return ivtDao; + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvYlServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvYlServiceImpl.java index dc325a86..fad14237 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvYlServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/iostorInv/impl/StIvtIostorinvYlServiceImpl.java @@ -1,7 +1,6 @@ package org.nl.wms.storage_manage.rawmanage.service.iostorInv.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -71,6 +70,7 @@ public class StIvtIostorinvYlServiceImpl extends ServiceImpl page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); @@ -152,36 +152,7 @@ public class StIvtIostorinvYlServiceImpl extends ServiceImpl().eq("struct_code", dis.getSect_code()).eq("material_id", dis.getMaterial_id())); - if (ObjectUtil.isNotEmpty(structivtYl)) { - structivtYl.setCanuse_qty(NumberUtil.add(structivtYl.getCanuse_qty(), dis.getPlan_qty())); - structivtYl.setIvt_qty(structivtYl.getCanuse_qty()); - structivtYlService.updateById(structivtYl); - } else { - structivtYlService.save(StIvtStructivtYl.builder() - .stockrecord_id(IdUtil.getStringId()) - .struct_id(dis.getStruct_id()) - .struct_code(dis.getStruct_code()) - .struct_name(dis.getStruct_name()) - .material_id(dis.getMaterial_id()) - .quality_scode(dis.getQuality_scode()) - .pcsn(dis.getPcsn()) - .ivt_level(dis.getIvt_level()) - .is_active(dis.getIs_active()) - .canuse_qty(dis.getReal_qty()) - .ivt_qty(dis.getReal_qty()) - .qty_unit_id(dis.getQty_unit_id()) - .instorage_time(DateUtil.now()) - .stor_id(mst.getStor_id()) - .workshop_id(mst.getWorkshop_id()) - .build() - ); - } - - /*//插入库存变动记录表 + //修改库存和插入库存变动记录表 structivtflowService.recordStructivtFlow( StIvtStructivtflowDto.builder() .bill_code(mst.getBill_code()).change_type_scode(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_CONFIRM).bill_table("st_ivt_iostorinv_bcp") @@ -190,7 +161,7 @@ public class StIvtIostorinvYlServiceImpl extends ServiceImpl - - - - - - - + + + + - + + - - + + + + diff --git a/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js b/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js index 7fb0e5ff..380581d2 100644 --- a/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js +++ b/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js @@ -2,7 +2,7 @@ import request from '@/utils/request' export function add(data) { return request({ - url: 'api/produceWorkorder/create', + url: 'api/produceWorkorder', method: 'post', data }) diff --git a/mes/qd/src/views/wms/pub/StructDialog.vue b/mes/qd/src/views/wms/pub/StructDialog.vue index 5ee7e394..d12b6af3 100644 --- a/mes/qd/src/views/wms/pub/StructDialog.vue +++ b/mes/qd/src/views/wms/pub/StructDialog.vue @@ -75,7 +75,7 @@ export default { return CRUD({ title: '点位', optShow: {}, - url: 'api/region/getPointQuery', + url: 'api/mpsSaleOrder', idField: 'region_code', sort: 'region_code,desc', query: { search: '', is_lock: '1', lock_type: '', sect_id: '', stor_id: '' }, diff --git a/mes/qd/src/views/wms/scheduler_manage/scheduler/index.vue b/mes/qd/src/views/wms/scheduler_manage/scheduler/index.vue index 256f8024..a964cb3a 100644 --- a/mes/qd/src/views/wms/scheduler_manage/scheduler/index.vue +++ b/mes/qd/src/views/wms/scheduler_manage/scheduler/index.vue @@ -10,8 +10,8 @@ width="500px" > - - + + @@ -52,7 +52,7 @@ @current-change="handleCurrentChange" > - + { - let same_mater = true - this.form.tableData.forEach((row) => { - if (row.material_code === item.material_code) { - same_mater = false - } - }) - if (same_mater) { - item.quality_scode = '01' - item.ivt_level = '01' - item.is_active = '1' - item.plan_qty = '0' - item.edit = true - this.form.total_qty = parseFloat(this.form.total_qty) + parseFloat(item.plan_qty) - this.form.tableData.splice(-1, 0, item) - } - }) - this.form.detail_count = this.form.tableData.length - }, tableChanged1(row) { this.nowrow.material_id = row.material_id this.nowrow.material_code = row.material_code @@ -353,10 +332,29 @@ export default { this.nowrow.plan_qty = '0' this.nowrow.qty_unit_name = row.unit_name this.nowrow.qty_unit_id = row.base_unit_id - }, tableChanged2(row) { - + let same_mater = true + this.form.tableData.forEach((item) => { + if (item.source_bill_code === row.sale_code) { + same_mater = false + } + }) + if (same_mater) { + const data = {} + data.material_id = row.material_id + data.material_code = row.material_code + data.material_name = row.material_name + data.plan_qty = row.product_qty + data.qty_unit_name = row.qty_unit_name + data.qty_unit_id = row.qty_unit_id + data.source_billdtl_id = row.sale_id + data.source_bill_type = row.sale_type + data.source_bill_code = row.sale_code + data.edit = true + this.form.tableData.splice(-1, 0, data) + this.form.total_qty = parseFloat(this.form.total_qty) + parseFloat(data.plan_qty) + } }, insertEvent(row) { this.dtlShow = true diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/AddDtl.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/AddDtl.vue index 7ffabf69..5cfb6f20 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/AddDtl.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/AddDtl.vue @@ -20,7 +20,7 @@ > - + @@ -62,8 +62,13 @@ :data="crud.data" style="width: 100%;" @selection-change="crud.selectionChangeHandler" + @current-change="clickChange" > - + + + @@ -72,6 +77,7 @@ + @@ -104,7 +110,7 @@ export default { cruds() { return CRUD({ title: '用户', - url: '/api/in/rawAssist/getBillDtl', + url: '/api/mpsSaleOrder', crudMethod: {}, optShow: { reset: true @@ -125,6 +131,7 @@ export default { return { dialogVisible: false, rows: [], + tableRadio: null, tableData: [] } }, @@ -146,13 +153,13 @@ export default { close() { this.$emit('update:dialogShow', false) }, + clickChange(item) { + this.tableRadio = item + }, submit() { this.$emit('update:dialogShow', false) this.rows = this.$refs.multipleTable.selection - crudProductIn.queryBoxMater(this.rows).then(res => { - this.rows = res - this.$emit('tableChanged', this.rows) - }) + this.$emit('tableChanged', this.tableRadio) } } } diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue index 38604026..c16f7a52 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue @@ -71,13 +71,13 @@ style="width: 200px" size="mini" clearable - @blur="vehicleCheck(form.vehicle_code)" placeholder="载具号" + @blur="vehicleCheck(form.vehicle_code)" /> - + @@ -208,11 +208,23 @@ + + + - + @@ -266,8 +278,8 @@ export default { sect_id: '', stor_id: '', point_code: null, - vehicle_code: "", - bucketunique: "", + vehicle_code: '', + bucketunique: '', checked: true, tableMater: [] }, @@ -285,6 +297,14 @@ export default { } }, methods: { + disabledIos(row) { + debugger + if (row.iostorinvdis_id === undefined) { + return false + } else { + return true + } + }, open() { crudSectattr.getSect({ 'stor_id': this.storId }).then(res => { this.sects = res.content @@ -309,7 +329,7 @@ export default { }, clcikRow(row, column, event) { this.form.dtl_row = row - crudProductIn.getIosInvDis({ "iostorinv_id": row.iostorinv_id, "iostorinvdtl_id": row.iostorinvdtl_id }).then(res => { + crudProductIn.getIosInvDis({ 'iostorinv_id': row.iostorinv_id, 'iostorinvdtl_id': row.iostorinvdtl_id }).then(res => { this.form.tableMater = res }) }, @@ -381,6 +401,9 @@ export default { this.form.tableMater.splice(-1, 0, item) } }, + deleteRow(index, rows) { + rows.splice(index, 1) + }, tableRowClassName({ row, rowIndex }) { row.index = rowIndex }, @@ -441,13 +464,18 @@ export default { return } crudProductIn.confirmvehicle(this.form).then(res => { - this.crud.notify('组盘成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) - this.form.vehicle_code = '' - this.form.bucketunique = '' + crudProductIn.getIosInvDtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id }).then(res => { + this.form.vehicle_code = '' + this.form.bucketunique = '' + this.openParam = res + this.form.tableMater = [] + this.dis_row = null + this.crud.notify('组盘成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) + }) }) - }, sectQueryChange(val) { + debugger this.sectProp = val if (val.length === 1) { this.stor_id = val[0] @@ -501,8 +529,8 @@ export default { this.divBtn = true debugger - this.dis_row.stor_id = this.stor_id - this.dis_row.sect_id = this.sect_id + this.dis_row.stor_id = this.stor_id.toString() + this.dis_row.sect_id = this.sect_id.toString() crudProductIn.divStruct(this.dis_row).then(res => { crudProductIn.getIosInvDtl({ 'iostorinv_id': this.dis_row.iostorinv_id }).then(res => { this.openParam = res diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/ViewDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/ViewDialog.vue index 95aaa188..19858b46 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/ViewDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/ViewDialog.vue @@ -235,13 +235,13 @@ export default { this.currentDis = current }, queryTableDtl() { - crudProductIn.getIODtl({ 'iostorinv_id': this.form.iostorinv_id }).then(res => { + crudProductIn.getIosInvDtl({ 'iostorinv_id': this.form.iostorinv_id }).then(res => { this.tableDtl = res }) }, queryTableDdis() { if (this.currentdtl !== null) { - crudProductIn.getDisTask({ 'iostorinvdtl_id': this.currentdtl.iostorinvdtl_id }).then(res => { + crudProductIn.getIosInvDis({ 'iostorinvdtl_id': this.currentdtl.iostorinvdtl_id }).then(res => { this.tabledis = res }).catch(() => { this.tabledis = [] diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/index.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/index.vue index 072d186d..b77531c1 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/index.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/index.vue @@ -141,17 +141,17 @@ > 分配 - - 作业任务 - + - - + + - - diff --git a/wcs/nladmin-ui/src/views/acs/order/index.vue b/wcs/nladmin-ui/src/views/acs/order/index.vue index 047f7d4a..504b9dca 100644 --- a/wcs/nladmin-ui/src/views/acs/order/index.vue +++ b/wcs/nladmin-ui/src/views/acs/order/index.vue @@ -135,6 +135,27 @@ + + + + + + + + + + + + + + + + + + + + +