add: 三线手持功能 : 半成品入库、半成品出库、空箱出库
This commit is contained in:
@@ -15,7 +15,8 @@
|
||||
1 = 1 and mater.material_type_id = '1528555445302726656'
|
||||
<if test="query.material_code != null and query.material_code != ''">
|
||||
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>
|
||||
order by mater.material_code ASC
|
||||
|
||||
|
||||
@@ -13,14 +13,16 @@ import java.util.Map;
|
||||
public enum PDAEnum {
|
||||
//点位区域
|
||||
REGION_CODE(MapOf.of("半成品入库区域", "A1_BCPRK01", "半成品出库区域", "A1_BCPCK01","成品入库区域",
|
||||
"A1_CPRK01","半成品盘点区域", "A1_BCP_PP","海柔半成品出库区域","A3_BCPCK01",
|
||||
"发货区域","A1_FH01")),
|
||||
"A1_CPRK01","半成品盘点区域", "A1_BCP_PP","海柔半成品出库区域","A3_BCPCK01","海柔半成品入库区域","A3_BCPRK01",
|
||||
"发货区域","A1_FH01","三线半成品空箱出库区域","A3_BCPKXCK01")),
|
||||
//库区编码
|
||||
SECT_CODE(MapOf.of("半成品库区", "KQ005")),
|
||||
//库区id
|
||||
SECT_ID(MapOf.of("成品库区", "1528631043496742912")),
|
||||
//仓库id
|
||||
STOR_ID(MapOf.of("紫铜三线半成品仓库", "15286279952695336963")),
|
||||
//车间
|
||||
WORKSHOP_ID(MapOf.of("智能三线车间", "A3")),
|
||||
//物料类别
|
||||
MATERIAL_CLASS(MapOf.of("管件原材料", "1503644349995552768","管件半成品", "1528555443906023424","管件成品", "1528555444031852544")),
|
||||
;
|
||||
|
||||
@@ -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 workprocedure_id;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private boolean is_delete;
|
||||
private Boolean is_delete;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
|
||||
@@ -262,7 +262,7 @@ public class StIvtIostorinvEmpBcpServiceImpl implements IStIvtIostorinvEmpBcpSe
|
||||
* 下发任务
|
||||
* @param task_id /
|
||||
*/
|
||||
private void sendTask(String task_id) {
|
||||
public void sendTask(String task_id) {
|
||||
|
||||
SchBaseTask taskDao = iSchBaseTaskService.getById(task_id);
|
||||
JSONArray param = new JSONArray();
|
||||
|
||||
@@ -160,6 +160,7 @@
|
||||
unit.unit_name,
|
||||
ROUND(ivt.canuse_qty / mater.net_weight,3) AS qty,
|
||||
attr.struct_name,
|
||||
attr.struct_code,
|
||||
attr.sect_code,
|
||||
attr.sect_name,
|
||||
attr.stor_name,
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user