add: 三线手持功能 : 半成品入库、半成品出库、空箱出库
This commit is contained in:
@@ -15,7 +15,8 @@
|
|||||||
1 = 1 and mater.material_type_id = '1528555445302726656'
|
1 = 1 and mater.material_type_id = '1528555445302726656'
|
||||||
<if test="query.material_code != null and query.material_code != ''">
|
<if test="query.material_code != null and query.material_code != ''">
|
||||||
AND (mater.material_code LIKE '%${query.material_code}%' or
|
AND (mater.material_code LIKE '%${query.material_code}%' or
|
||||||
mater.material_name LIKE '%${query.material_code}%')
|
mater.material_name LIKE '%${query.material_code}%') or
|
||||||
|
mater.material_spec LIKE '%${query.material_code}%')
|
||||||
</if>
|
</if>
|
||||||
order by mater.material_code ASC
|
order by mater.material_code ASC
|
||||||
|
|
||||||
|
|||||||
@@ -13,14 +13,16 @@ import java.util.Map;
|
|||||||
public enum PDAEnum {
|
public enum PDAEnum {
|
||||||
//点位区域
|
//点位区域
|
||||||
REGION_CODE(MapOf.of("半成品入库区域", "A1_BCPRK01", "半成品出库区域", "A1_BCPCK01","成品入库区域",
|
REGION_CODE(MapOf.of("半成品入库区域", "A1_BCPRK01", "半成品出库区域", "A1_BCPCK01","成品入库区域",
|
||||||
"A1_CPRK01","半成品盘点区域", "A1_BCP_PP","海柔半成品出库区域","A3_BCPCK01",
|
"A1_CPRK01","半成品盘点区域", "A1_BCP_PP","海柔半成品出库区域","A3_BCPCK01","海柔半成品入库区域","A3_BCPRK01",
|
||||||
"发货区域","A1_FH01")),
|
"发货区域","A1_FH01","三线半成品空箱出库区域","A3_BCPKXCK01")),
|
||||||
//库区编码
|
//库区编码
|
||||||
SECT_CODE(MapOf.of("半成品库区", "KQ005")),
|
SECT_CODE(MapOf.of("半成品库区", "KQ005")),
|
||||||
//库区id
|
//库区id
|
||||||
SECT_ID(MapOf.of("成品库区", "1528631043496742912")),
|
SECT_ID(MapOf.of("成品库区", "1528631043496742912")),
|
||||||
//仓库id
|
//仓库id
|
||||||
STOR_ID(MapOf.of("紫铜三线半成品仓库", "15286279952695336963")),
|
STOR_ID(MapOf.of("紫铜三线半成品仓库", "15286279952695336963")),
|
||||||
|
//车间
|
||||||
|
WORKSHOP_ID(MapOf.of("智能三线车间", "A3")),
|
||||||
//物料类别
|
//物料类别
|
||||||
MATERIAL_CLASS(MapOf.of("管件原材料", "1503644349995552768","管件半成品", "1528555443906023424","管件成品", "1528555444031852544")),
|
MATERIAL_CLASS(MapOf.of("管件原材料", "1503644349995552768","管件半成品", "1528555443906023424","管件成品", "1528555444031852544")),
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
package org.nl.wms.storage_manage.pda.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import org.nl.common.anno.Log;
|
||||||
|
import org.nl.wms.storage_manage.pda.service.PdaStHrBcpEmpOutService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 手持半成品出库 前端控制器
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Liuxy
|
||||||
|
* @since 2023-08-30
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/pda/hrBcp/empOut")
|
||||||
|
public class PdaStHrBcpEmpOutController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PdaStHrBcpEmpOutService pdaStHrBcpEmpOutService;
|
||||||
|
|
||||||
|
@PostMapping("/getIvt")
|
||||||
|
@Log("获取库存")
|
||||||
|
//("获取库存")
|
||||||
|
public ResponseEntity<Object> getMaterial(@RequestBody JSONObject whereJson) {
|
||||||
|
return new ResponseEntity<>(pdaStHrBcpEmpOutService.getIvt(whereJson), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/getPoint")
|
||||||
|
@Log("获取入库点")
|
||||||
|
//("获取入库点")
|
||||||
|
public ResponseEntity<Object> getPoint() {
|
||||||
|
return new ResponseEntity<>(pdaStHrBcpEmpOutService.getPoint(), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/confirm")
|
||||||
|
@Log("出库确认")
|
||||||
|
//("出库确认")
|
||||||
|
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
|
||||||
|
return new ResponseEntity<>(pdaStHrBcpEmpOutService.confirm(whereJson), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
package org.nl.wms.storage_manage.pda.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import org.nl.common.anno.Log;
|
||||||
|
import org.nl.common.domain.query.PageQuery;
|
||||||
|
import org.nl.wms.storage_manage.pda.service.PdaStHrBcpInService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 手持半成品入库 前端控制器
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Liuxy
|
||||||
|
* @since 2023-08-30
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/pda/hrBcp/iosIn")
|
||||||
|
public class PdaStHrBcpInController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PdaStHrBcpInService pdaStHrBcpInService;
|
||||||
|
|
||||||
|
@PostMapping("/getMaterial")
|
||||||
|
@Log("查询物料")
|
||||||
|
//("查询物料")
|
||||||
|
public ResponseEntity<Object> getMaterial(@RequestBody JSONObject whereJson, PageQuery pageQuery) {
|
||||||
|
return new ResponseEntity<>(pdaStHrBcpInService.getMaterial(whereJson,pageQuery), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/getWork")
|
||||||
|
@Log("获取工序下拉框")
|
||||||
|
//("获取工序下拉框")
|
||||||
|
public ResponseEntity<Object> getWork() {
|
||||||
|
return new ResponseEntity<>(pdaStHrBcpInService.getWork(), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/getPoint")
|
||||||
|
@Log("获取入库点")
|
||||||
|
//("获取入库点")
|
||||||
|
public ResponseEntity<Object> getPoint() {
|
||||||
|
return new ResponseEntity<>(pdaStHrBcpInService.getPoint(), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/confirm")
|
||||||
|
@Log("确认入库")
|
||||||
|
//("确认入库")
|
||||||
|
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
|
||||||
|
return new ResponseEntity<>(pdaStHrBcpInService.confirm(whereJson), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
package org.nl.wms.storage_manage.pda.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import org.nl.common.anno.Log;
|
||||||
|
import org.nl.common.domain.query.PageQuery;
|
||||||
|
import org.nl.wms.storage_manage.pda.service.PdaStHrBcpInService;
|
||||||
|
import org.nl.wms.storage_manage.pda.service.PdaStHrBcpOutService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 手持半成品出库 前端控制器
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Liuxy
|
||||||
|
* @since 2023-08-30
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/pda/hrBcp/iosOut")
|
||||||
|
public class PdaStHrBcpOutController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PdaStHrBcpOutService pdaStHrBcpOutService;
|
||||||
|
|
||||||
|
@PostMapping("/getIvt")
|
||||||
|
@Log("获取库存")
|
||||||
|
//("获取库存")
|
||||||
|
public ResponseEntity<Object> getMaterial(@RequestBody JSONObject whereJson) {
|
||||||
|
return new ResponseEntity<>(pdaStHrBcpOutService.getIvt(whereJson), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/getPoint")
|
||||||
|
@Log("获取入库点")
|
||||||
|
//("获取入库点")
|
||||||
|
public ResponseEntity<Object> getPoint() {
|
||||||
|
return new ResponseEntity<>(pdaStHrBcpOutService.getPoint(), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/confirm")
|
||||||
|
@Log("出库确认")
|
||||||
|
//("出库确认")
|
||||||
|
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
|
||||||
|
return new ResponseEntity<>(pdaStHrBcpOutService.confirm(whereJson), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package org.nl.wms.storage_manage.pda.service;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 手持半成品出库 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Liuxy
|
||||||
|
* @since 2023-08-30
|
||||||
|
*/
|
||||||
|
public interface PdaStHrBcpEmpOutService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取库存
|
||||||
|
* @param whereJson /
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONObject getIvt(JSONObject whereJson);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取入库点
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONObject getPoint();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出库确认
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONObject confirm(JSONObject whereJson);
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package org.nl.wms.storage_manage.pda.service;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import org.nl.common.domain.query.PageQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 手持半成品入库 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Liuxy
|
||||||
|
* @since 2023-08-30
|
||||||
|
*/
|
||||||
|
public interface PdaStHrBcpInService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询物料
|
||||||
|
* @param whereJson /
|
||||||
|
* @return JSONObject /
|
||||||
|
*/
|
||||||
|
JSONObject getMaterial(JSONObject whereJson, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取工序下拉框
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONObject getWork();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 确认入库
|
||||||
|
* @param whereJson /
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONObject confirm(JSONObject whereJson);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取入库点
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONObject getPoint();
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package org.nl.wms.storage_manage.pda.service;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import org.nl.common.domain.query.PageQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 手持半成品出库 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Liuxy
|
||||||
|
* @since 2023-08-30
|
||||||
|
*/
|
||||||
|
public interface PdaStHrBcpOutService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取库存
|
||||||
|
* @param whereJson /
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONObject getIvt(JSONObject whereJson);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取入库点
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONObject getPoint();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出库确认
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONObject confirm(JSONObject whereJson);
|
||||||
|
}
|
||||||
@@ -0,0 +1,182 @@
|
|||||||
|
package org.nl.wms.storage_manage.pda.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import org.nl.common.enums.AcsTaskEnum;
|
||||||
|
import org.nl.common.publish.BussEventMulticaster;
|
||||||
|
import org.nl.common.publish.event.PointEvent;
|
||||||
|
import org.nl.common.utils.IdUtil;
|
||||||
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
|
import org.nl.modules.wql.util.SpringContextHolder;
|
||||||
|
import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService;
|
||||||
|
import org.nl.wms.masterdata_manage.service.master.dao.MdPbMeasureunit;
|
||||||
|
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||||
|
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||||
|
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService;
|
||||||
|
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
|
||||||
|
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr;
|
||||||
|
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||||
|
import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService;
|
||||||
|
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
|
||||||
|
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
|
||||||
|
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||||
|
import org.nl.wms.storage_manage.IOSEnum;
|
||||||
|
import org.nl.wms.storage_manage.IVTEnum;
|
||||||
|
import org.nl.wms.storage_manage.pda.PDAEnum;
|
||||||
|
import org.nl.wms.storage_manage.pda.service.PdaStHrBcpEmpOutService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.impl.StIvtIostorinvEmpBcpServiceImpl;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper.StIvtStructivtHrBcpMapper;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 手持半成品入库 服务实现类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Liuxy
|
||||||
|
* @since 2023-08-30
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class PdaStHrBcpEmpOutServiceImpl implements PdaStHrBcpEmpOutService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IPdmBiWorkprocedureService iPdmBiWorkprocedureService; // 工序服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IStIvtIostorinvOrderService iStIvtIostorinvOrderService; // 出入库顺序服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISchBasePointService iSchBasePointService; // 点位服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private StIvtStructivtHrBcpMapper stIvtStructivtHrBcpMapper; //库存服务mapper
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
protected IMdPbMeasureunitService iMdPbMeasureunitService; // 计量单位服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IStIvtStructattrService structattrService; // 仓位服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IStIvtSectattrService sectattrService; // 库区服务
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject getIvt(JSONObject whereJson) {
|
||||||
|
|
||||||
|
StIvtSectattr sect = sectattrService.getOne(
|
||||||
|
new QueryWrapper<StIvtSectattr>().lambda()
|
||||||
|
.eq(StIvtSectattr::getSect_name, "海柔半成品库区")
|
||||||
|
);
|
||||||
|
|
||||||
|
List<StIvtStructattr> list = new ArrayList<>();
|
||||||
|
if (ObjectUtil.isEmpty(whereJson.getString("storagevehicle_code"))) {
|
||||||
|
list = structattrService.list(
|
||||||
|
new QueryWrapper<StIvtStructattr>().lambda()
|
||||||
|
.eq(StIvtStructattr::getSect_id, sect.getSect_id())
|
||||||
|
.eq(StIvtStructattr::getStor_id, sect.getStor_id())
|
||||||
|
.eq(StIvtStructattr::getIs_used, true)
|
||||||
|
.eq(StIvtStructattr::getIs_emptyvehicle, true)
|
||||||
|
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
|
.and(qr -> qr.ne(StIvtStructattr::getStoragevehicle_code, "")
|
||||||
|
.or().isNull(StIvtStructattr::getStoragevehicle_code)
|
||||||
|
)
|
||||||
|
.orderByDesc(StIvtStructattr::getXqty)
|
||||||
|
.orderByAsc(StIvtStructattr::getYqty)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
list = structattrService.list(
|
||||||
|
new QueryWrapper<StIvtStructattr>().lambda()
|
||||||
|
.eq(StIvtStructattr::getSect_id, sect.getSect_id())
|
||||||
|
.eq(StIvtStructattr::getStor_id, sect.getStor_id())
|
||||||
|
.eq(StIvtStructattr::getIs_used, true)
|
||||||
|
.eq(StIvtStructattr::getIs_emptyvehicle, true)
|
||||||
|
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
|
.and(qr -> qr.ne(StIvtStructattr::getStoragevehicle_code, "")
|
||||||
|
.or().isNull(StIvtStructattr::getStoragevehicle_code)
|
||||||
|
)
|
||||||
|
.likeRight(StIvtStructattr::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||||
|
.orderByDesc(StIvtStructattr::getXqty)
|
||||||
|
.orderByAsc(StIvtStructattr::getYqty)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("data", JSONArray.parseArray(JSON.toJSONString(list)));
|
||||||
|
result.put("message", "查询成功");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject getPoint() {
|
||||||
|
List<SchBasePoint> list = iSchBasePointService.list(
|
||||||
|
new QueryWrapper<SchBasePoint>().lambda()
|
||||||
|
.eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("三线半成品空箱出库区域"))
|
||||||
|
.eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("是"))
|
||||||
|
.eq(SchBasePoint::getIs_delete, IOSEnum.IS_USED.code("否"))
|
||||||
|
);
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("data", JSONArray.parseArray(JSON.toJSONString(list)));
|
||||||
|
result.put("message", "查询成功");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public JSONObject confirm(JSONObject whereJson) {
|
||||||
|
String point_code = whereJson.getString("point_code");
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("点位不能为空!");
|
||||||
|
|
||||||
|
JSONArray rows = whereJson.getJSONArray("rows");
|
||||||
|
|
||||||
|
for (int i = 0; i < rows.size(); i++) {
|
||||||
|
JSONObject json = rows.getJSONObject(i);
|
||||||
|
|
||||||
|
StIvtStructattr attrDao = structattrService.getById(json.getString("struct_id"));
|
||||||
|
|
||||||
|
// 1.生成任务
|
||||||
|
SchBaseTask taskDao = new SchBaseTask();
|
||||||
|
PointEvent event = PointEvent.builder()
|
||||||
|
.type(AcsTaskEnum.TASK_STRUCT_HR_EMP_OUT)
|
||||||
|
.acs_task_type("16")
|
||||||
|
.task_group_id(IdUtil.getStringId())
|
||||||
|
.point_code1(attrDao.getStruct_code())
|
||||||
|
.point_code3(point_code)
|
||||||
|
.vehicle_code(attrDao.getStoragevehicle_code())
|
||||||
|
.product_area("A3")
|
||||||
|
.callback((Consumer<String>) taskDao::setTask_id)
|
||||||
|
.build();
|
||||||
|
BussEventMulticaster.Publish(event);
|
||||||
|
|
||||||
|
// 2.下发任务
|
||||||
|
StIvtIostorinvEmpBcpServiceImpl bean = SpringContextHolder.getBean(StIvtIostorinvEmpBcpServiceImpl.class);
|
||||||
|
bean.sendTask(taskDao.getTask_id());
|
||||||
|
|
||||||
|
// 3.锁定货位
|
||||||
|
attrDao.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
|
||||||
|
structattrService.updateById(attrDao);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("data", "");
|
||||||
|
result.put("message", "出库成功");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
package org.nl.wms.storage_manage.pda.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import org.nl.common.domain.query.PageQuery;
|
||||||
|
import org.nl.common.utils.IdUtil;
|
||||||
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
|
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||||
|
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||||
|
import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService;
|
||||||
|
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
|
||||||
|
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
|
||||||
|
import org.nl.wms.storage_manage.IOSEnum;
|
||||||
|
import org.nl.wms.storage_manage.pda.PDAEnum;
|
||||||
|
import org.nl.wms.storage_manage.pda.service.PdaStHrBcpInService;
|
||||||
|
import org.nl.wms.storage_manage.pda.service.dto.PdaQuery;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvOrder;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 手持半成品入库 服务实现类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Liuxy
|
||||||
|
* @since 2023-08-30
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class PdaStHrBcpInServiceImpl implements PdaStHrBcpInService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IPdmBiWorkprocedureService iPdmBiWorkprocedureService; // 工序服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IStIvtIostorinvOrderService iStIvtIostorinvOrderService; // 出入库顺序服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISchBasePointService iSchBasePointService; // 点位服务
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject getMaterial(JSONObject whereJson1, PageQuery pageQuery) {
|
||||||
|
PdaQuery whereJson = new PdaQuery();
|
||||||
|
whereJson.setMaterial_code(whereJson1.getString("material_spec"));
|
||||||
|
int size = whereJson1.getIntValue("size");
|
||||||
|
|
||||||
|
int totalCount = 0;
|
||||||
|
|
||||||
|
List list = new ArrayList<>();
|
||||||
|
if (ObjectUtil.isEmpty(whereJson1.getString("material_spec"))) {
|
||||||
|
List<MdMeMaterialbase> list1 = iMdMeMaterialbaseService.list(
|
||||||
|
new QueryWrapper<MdMeMaterialbase>().lambda()
|
||||||
|
.eq(MdMeMaterialbase::getMaterial_type_id, "1528555445302726656")
|
||||||
|
);
|
||||||
|
list = list1.subList(0, Math.min(list1.size(), size));
|
||||||
|
totalCount = list1.size();
|
||||||
|
} else {
|
||||||
|
List list1 = iMdMeMaterialbaseService.getPdaBcpGetMaterial(whereJson, pageQuery);
|
||||||
|
list = list1.subList(0, Math.min(list1.size(), size));
|
||||||
|
totalCount = list1.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("data", JSONArray.parseArray(JSON.toJSONString(list)));
|
||||||
|
result.put("totalCount", totalCount);
|
||||||
|
result.put("message", "查询成功");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject getWork() {
|
||||||
|
JSONArray array = iPdmBiWorkprocedureService.downSelect(PDAEnum.WORKSHOP_ID.code("智能三线车间"));
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("data", array);
|
||||||
|
result.put("message", "查询成功");
|
||||||
|
return result;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject getPoint() {
|
||||||
|
List<SchBasePoint> list = iSchBasePointService.list(
|
||||||
|
new QueryWrapper<SchBasePoint>().lambda()
|
||||||
|
.eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("海柔半成品入库区域"))
|
||||||
|
.eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("是"))
|
||||||
|
.eq(SchBasePoint::getIs_delete, IOSEnum.IS_USED.code("否"))
|
||||||
|
);
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("data", JSONArray.parseArray(JSON.toJSONString(list)));
|
||||||
|
result.put("message", "查询成功");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public JSONObject confirm(JSONObject whereJson) {
|
||||||
|
// 校验
|
||||||
|
if (ObjectUtil.isEmpty(whereJson.getString("material_code"))) throw new BadRequestException("请选择物料!");
|
||||||
|
if (ObjectUtil.isEmpty(whereJson.getString("qty"))) throw new BadRequestException("请填写数量!");
|
||||||
|
if (ObjectUtil.isEmpty(whereJson.getString("bar_code"))) throw new BadRequestException("请扫码!");
|
||||||
|
if (ObjectUtil.isEmpty(whereJson.getString("point_code"))) throw new BadRequestException("请选择点位!");
|
||||||
|
|
||||||
|
|
||||||
|
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getOne(
|
||||||
|
new QueryWrapper<MdMeMaterialbase>().lambda()
|
||||||
|
.eq(MdMeMaterialbase::getMaterial_code, whereJson.getString("material_code"))
|
||||||
|
, false);
|
||||||
|
|
||||||
|
// 插入出入库顺序表
|
||||||
|
StIvtIostorinvOrder dao = new StIvtIostorinvOrder();
|
||||||
|
dao.setOrder_id(IdUtil.getStringId());
|
||||||
|
dao.setWorkshop_id(PDAEnum.WORKSHOP_ID.code("智能三线车间"));
|
||||||
|
dao.setStor_id(PDAEnum.STOR_ID.code("紫铜三线半成品仓库"));
|
||||||
|
dao.setIn_device(whereJson.getString("point_code"));
|
||||||
|
dao.setBar_code(whereJson.getString("bar_code"));
|
||||||
|
dao.setMaterial_id(materDao.getMaterial_id());
|
||||||
|
dao.setSale_id(whereJson.getString("sale_id"));
|
||||||
|
|
||||||
|
// 重量 : kg
|
||||||
|
double weight = NumberUtil.div(NumberUtil.mul(materDao.getNet_weight().doubleValue(), whereJson.getDoubleValue("qty")), 1000);
|
||||||
|
dao.setWeight(BigDecimal.valueOf(weight));
|
||||||
|
dao.setQty(whereJson.getBigDecimal("qty"));
|
||||||
|
dao.setType(IOSEnum.IO_TYPE.check("入库"));
|
||||||
|
dao.setIs_delete(false);
|
||||||
|
dao.setCreate_time(DateUtil.now());
|
||||||
|
dao.setBiz_date(DateUtil.today());
|
||||||
|
dao.setWorkprocedure_id(whereJson.getString("workprocedure_id"));
|
||||||
|
iStIvtIostorinvOrderService.save(dao);
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("data", "");
|
||||||
|
result.put("message", "操作成功");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,157 @@
|
|||||||
|
package org.nl.wms.storage_manage.pda.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
|
import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService;
|
||||||
|
import org.nl.wms.masterdata_manage.service.master.dao.MdPbMeasureunit;
|
||||||
|
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||||
|
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||||
|
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
|
||||||
|
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||||
|
import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService;
|
||||||
|
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
|
||||||
|
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
|
||||||
|
import org.nl.wms.storage_manage.IOSEnum;
|
||||||
|
import org.nl.wms.storage_manage.IVTEnum;
|
||||||
|
import org.nl.wms.storage_manage.pda.PDAEnum;
|
||||||
|
import org.nl.wms.storage_manage.pda.service.PdaStHrBcpOutService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpOutService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService;
|
||||||
|
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper.StIvtStructivtHrBcpMapper;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 手持半成品入库 服务实现类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Liuxy
|
||||||
|
* @since 2023-08-30
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class PdaStHrBcpOutServiceImpl implements PdaStHrBcpOutService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISchBasePointService iSchBasePointService; // 点位服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private StIvtStructivtHrBcpMapper stIvtStructivtHrBcpMapper; //库存服务mapper
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
protected IMdPbMeasureunitService iMdPbMeasureunitService; // 计量单位服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IStIvtStructattrService structattrService; // 仓位服务
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IStIvtIostorinvHrBcpOutService iStIvtIostorinvHrBcpOutService; // 半成品出库服务
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject getIvt(JSONObject whereJson) {
|
||||||
|
|
||||||
|
JSONObject param = new JSONObject();
|
||||||
|
param.put("material_code", whereJson.getString("material_spec"));
|
||||||
|
|
||||||
|
List<Map> list = stIvtStructivtHrBcpMapper.getPdaBcpIvt(param);
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("data", JSONArray.parseArray(JSON.toJSONString(list)));
|
||||||
|
result.put("message", "查询成功");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject getPoint() {
|
||||||
|
List<SchBasePoint> list = iSchBasePointService.list(
|
||||||
|
new QueryWrapper<SchBasePoint>().lambda()
|
||||||
|
.eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("海柔半成品出库区域"))
|
||||||
|
.eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("是"))
|
||||||
|
.eq(SchBasePoint::getIs_delete, IOSEnum.IS_USED.code("否"))
|
||||||
|
);
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("data", JSONArray.parseArray(JSON.toJSONString(list)));
|
||||||
|
result.put("message", "查询成功");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public JSONObject confirm(JSONObject whereJson) {
|
||||||
|
String point_code = whereJson.getString("point_code");
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("点位不能为空!");
|
||||||
|
|
||||||
|
// 组织数据出库
|
||||||
|
JSONArray rows = whereJson.getJSONArray("rows");
|
||||||
|
|
||||||
|
for (int i = 0; i < rows.size(); i++) {
|
||||||
|
JSONObject json = rows.getJSONObject(i);
|
||||||
|
|
||||||
|
JSONObject jsonMst = new JSONObject();
|
||||||
|
jsonMst.put("biz_date", DateUtil.today());
|
||||||
|
jsonMst.put("bill_type", IOSEnum.BILL_TYPE_HR.code("生产出库"));
|
||||||
|
jsonMst.put("remark", "手持PDA创建" );
|
||||||
|
jsonMst.put("product_code", PDAEnum.WORKSHOP_ID.code("智能三线车间") );
|
||||||
|
jsonMst.put("point_code", point_code );
|
||||||
|
jsonMst.put("stor_id", IOSEnum.STOR_CODE.code("海柔半成品"));
|
||||||
|
jsonMst.put("auto_send", "1"); // 是否自动创建任务并下发
|
||||||
|
|
||||||
|
JSONArray tableData = new JSONArray();
|
||||||
|
|
||||||
|
JSONObject jsonDtl = new JSONObject();
|
||||||
|
jsonDtl.put("material_id", json.getString("material_id"));
|
||||||
|
jsonDtl.put("pcsn", "");
|
||||||
|
jsonDtl.put("plan_qty", json.getString("canuse_qty"));
|
||||||
|
jsonDtl.put("quality_scode", IVTEnum.QUALITY_SCODE.code("合格品"));
|
||||||
|
jsonDtl.put("base_bill_code", "");
|
||||||
|
|
||||||
|
物料信息:
|
||||||
|
{
|
||||||
|
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById( json.getString("material_id"));
|
||||||
|
MdPbMeasureunit untiDao = iMdPbMeasureunitService.getById(materDao.getBase_unit_id());
|
||||||
|
|
||||||
|
jsonDtl.put("qty_unit_id", untiDao.getMeasure_unit_id());
|
||||||
|
jsonDtl.put("qty_unit_name", untiDao.getUnit_name());
|
||||||
|
jsonDtl.put("unit_weight", materDao.getNet_weight());
|
||||||
|
jsonDtl.put("storagevehicle_code", json.getString("storagevehicle_code"));
|
||||||
|
}
|
||||||
|
|
||||||
|
仓位信息:
|
||||||
|
{
|
||||||
|
StIvtStructattr attrDao = structattrService.getById(json.getString("struct_id"));
|
||||||
|
|
||||||
|
jsonDtl.put("sect_id", attrDao.getSect_id());
|
||||||
|
jsonDtl.put("sect_code", attrDao.getSect_code());
|
||||||
|
jsonDtl.put("sect_name", attrDao.getSect_name());
|
||||||
|
jsonDtl.put("struct_id", attrDao.getStruct_id());
|
||||||
|
jsonDtl.put("struct_code", attrDao.getStruct_code());
|
||||||
|
jsonDtl.put("struct_name", attrDao.getStruct_name());
|
||||||
|
}
|
||||||
|
|
||||||
|
tableData.add(jsonDtl);
|
||||||
|
jsonMst.put("tableData",tableData);
|
||||||
|
|
||||||
|
// 调用出库服务
|
||||||
|
iStIvtIostorinvHrBcpOutService.create(jsonMst);
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("data", "");
|
||||||
|
result.put("message", "出库成功");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -89,10 +89,15 @@ public class StIvtIostorinvOrder implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String type;
|
private String type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工序标识
|
||||||
|
*/
|
||||||
|
private String workprocedure_id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否删除
|
* 是否删除
|
||||||
*/
|
*/
|
||||||
private boolean is_delete;
|
private Boolean is_delete;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ public class StIvtIostorinvEmpBcpServiceImpl implements IStIvtIostorinvEmpBcpSe
|
|||||||
* 下发任务
|
* 下发任务
|
||||||
* @param task_id /
|
* @param task_id /
|
||||||
*/
|
*/
|
||||||
private void sendTask(String task_id) {
|
public void sendTask(String task_id) {
|
||||||
|
|
||||||
SchBaseTask taskDao = iSchBaseTaskService.getById(task_id);
|
SchBaseTask taskDao = iSchBaseTaskService.getById(task_id);
|
||||||
JSONArray param = new JSONArray();
|
JSONArray param = new JSONArray();
|
||||||
|
|||||||
@@ -160,6 +160,7 @@
|
|||||||
unit.unit_name,
|
unit.unit_name,
|
||||||
ROUND(ivt.canuse_qty / mater.net_weight,3) AS qty,
|
ROUND(ivt.canuse_qty / mater.net_weight,3) AS qty,
|
||||||
attr.struct_name,
|
attr.struct_name,
|
||||||
|
attr.struct_code,
|
||||||
attr.sect_code,
|
attr.sect_code,
|
||||||
attr.sect_name,
|
attr.sect_name,
|
||||||
attr.stor_name,
|
attr.stor_name,
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user