add: 三线手持功能 : 半成品入库、半成品出库、空箱出库

This commit is contained in:
2023-08-30 18:17:11 +08:00
parent f83dc77f98
commit 427a3084a4
15 changed files with 780 additions and 5 deletions

View File

@@ -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

View File

@@ -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")),
;

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -89,10 +89,15 @@ public class StIvtIostorinvOrder implements Serializable {
*/
private String type;
/**
* 工序标识
*/
private String workprocedure_id;
/**
* 是否删除
*/
private boolean is_delete;
private Boolean is_delete;
/**
* 创建时间

View File

@@ -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();

View File

@@ -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,