opt: 解包批量工单

This commit is contained in:
2025-10-14 16:46:37 +08:00
parent d74abf583a
commit 0c1c1ea1ad
10 changed files with 651 additions and 5 deletions

View File

@@ -1,6 +1,7 @@
package org.nl.wms.pm_manage.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.annotation.Limit;
import org.nl.common.base.TableDataInfo;
@@ -82,4 +83,17 @@ public class PdmBdWorkorderController {
public ResponseEntity<Object> getStockMaterial(PdmBdWorkorderQuery entity, PageQuery pageQuery) {
return new ResponseEntity<>(TableDataInfo.build(pdmBdWorkorderService.getStockMaterial(entity, pageQuery)), HttpStatus.OK);
}
@PostMapping("/batchAddOrders")
@Log("批量新增工单")
public ResponseEntity<Object> batchAddOrders(@RequestBody JSONObject entity) {
pdmBdWorkorderService.batchAddOrders(entity);
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/getStockMaterial2")
@Log("获取库存物料2")
public ResponseEntity<Object> getStockMaterial2(PdmBdWorkorderQuery entity, PageQuery pageQuery) {
return new ResponseEntity<>(TableDataInfo.build(pdmBdWorkorderService.getStockMaterial2(entity, pageQuery)), HttpStatus.OK);
}
}

View File

@@ -78,6 +78,7 @@ public interface IPdmBdWorkorderService extends IService<PdmBdWorkorder> {
* @return
*/
IPage<GroupPlate> getStockMaterial(PdmBdWorkorderQuery entity, PageQuery pageQuery);
IPage<GroupPlate> getStockMaterial2(PdmBdWorkorderQuery entity, PageQuery pageQuery);
/**
* 开工
@@ -86,4 +87,6 @@ public interface IPdmBdWorkorderService extends IService<PdmBdWorkorder> {
void submits(PdmBdWorkorder entity);
void loadComplete(PdmBdWorkorder entity);
void batchAddOrders(JSONObject entity);
}

View File

@@ -15,4 +15,5 @@ public interface PdmBdWorkorderMapper extends BaseMapper<PdmBdWorkorder> {
IPage<PdmBdWorkorder> selectPageLeftJoin(IPage<PdmBdWorkorder> pages, PdmBdWorkorderQuery query);
IPage<GroupPlate> selectUseMaterialPageLeftJoin(IPage<GroupPlate> pages, PdmBdWorkorderQuery query);
IPage<GroupPlate> selectUseMaterialPageLeftJoin2(IPage<GroupPlate> pages, PdmBdWorkorderQuery query);
}

View File

@@ -52,5 +52,32 @@
#{query.blurry}, '%'))
</if>
</select>
<select id="selectUseMaterialPageLeftJoin2"
resultType="org.nl.wms.warehouse_manage.service.dao.GroupPlate">
SELECT
mg.*,
ss.struct_code,
mm.material_code,
mm.material_name,
mm.material_spec
FROM
`md_pb_groupplate` mg
LEFT JOIN st_ivt_structattr ss ON ss.storagevehicle_code = mg.storagevehicle_code
LEFT JOIN md_me_materialbase mm ON mm.material_id = mg.material_id
WHERE mg.`status` = '02' AND mg.frozen_qty = 0 AND IFNULL(mg.storagevehicle_code,'') <![CDATA[ <> ]]> ''
AND IFNULL(ss.struct_code,'') <![CDATA[ <> ]]> ''
AND 0 = (SELECT COUNT(*) FROM pdm_bd_workorder po WHERE po.raw_material_code = mg.storagevehicle_code AND po.workorder_status <![CDATA[ <> ]]> '5')
<if test="query.stor_id != null and query.stor_id != ''">
AND ss.stor_id = #{query.stor_id}
</if>
<if test="query.blurry != null and query.blurry != ''">
AND (mm.material_code LIKE CONCAT('%', #{query.blurry}, '%') OR mm.material_name LIKE CONCAT('%',
#{query.blurry}, '%'))
</if>
AND 0 = (SELECT COUNT(*)
FROM pdm_bd_workorder o
WHERE o.workorder_status <![CDATA[ < ]]> 5
AND o.struct_code = ss.struct_code)
</select>
</mapper>

View File

@@ -3,6 +3,7 @@ package org.nl.wms.pm_manage.service.impl;
import cn.hutool.core.date.DateUtil;
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.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -36,6 +37,7 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -170,6 +172,12 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
pages = pdmBdWorkorderMapper.selectUseMaterialPageLeftJoin(pages, query);
return pages;
}
@Override
public IPage<GroupPlate> getStockMaterial2(PdmBdWorkorderQuery query, PageQuery page) {
IPage<GroupPlate> pages = new Page<>(page.getPage() + 1, page.getSize());
pages = pdmBdWorkorderMapper.selectUseMaterialPageLeftJoin2(pages, query);
return pages;
}
@Override
public void submits(PdmBdWorkorder entity) {
@@ -196,6 +204,54 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
updateById(order);
}
@Override
public void batchAddOrders(JSONObject entity) {
log.info("{}", entity);
List<PdmBdWorkorder> orders = new ArrayList<>();
JSONArray materials = entity.getJSONArray("materials");
for (int i = 0; i < materials.size(); i++) {
JSONObject material = materials.getJSONObject(i);
PdmBdWorkorder order = new PdmBdWorkorder();
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
String today = DateUtil.format(DateUtil.date(), "yyyyMMdd");
// 点位编码和点位名称为父点位
order.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
order.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER"));
order.setPlan_qty(entity.getBigDecimal("plan_qty"));
order.setVehicle_type(entity.getString("vehicle_type"));
order.setRegion_code(entity.getString("region_code"));
order.setRegion_name(entity.getString("region_name"));
order.setPoint_code(entity.getString("point_code"));
order.setPoint_name(entity.getString("point_name"));
order.setPlanproducestart_date(entity.getString("planproducestart_date"));
order.setPlanproduceend_date(entity.getString("planproduceend_date"));
order.setMaterial_id(material.getString("material_id"));
order.setMaterial_name(material.getString("material_name"));
order.setMaterial_spec(material.getString("material_spec"));
order.setMaterial_code(material.getString("material_code"));
order.setStruct_code(material.getString("struct_code"));
order.setRaw_material_code(material.getString("storagevehicle_code"));
order.setPlan_weight(material.getBigDecimal("qty"));
JSONObject data = new JSONObject();
data.put("pcsn", material.getString("pcsn"));
data.put("supp_code", material.getString("supp_code"));
data.put("supp_name", material.getString("supp_name"));
order.setExt_data(JSONObject.toJSONString(data));
order.setCreate_id(currentUserId);
order.setCreate_name(nickName);
order.setCreate_time(now);
order.setTeam(CommonUtils.getDayShift());
order.setProduce_date(today);
order.setUpdate_id(currentUserId);
order.setUpdate_name(nickName);
order.setUpdate_time(now);
orders.add(order);
}
this.saveBatch(orders);
}
/**
* 判断工单是否下发、当天工单
* 判断逻辑不能过于复杂,因此提取出来