opt: 解包批量工单
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断工单是否下发、当天工单
|
||||
* 判断逻辑不能过于复杂,因此提取出来
|
||||
|
||||
Reference in New Issue
Block a user