rev:半成品盘点一体机
This commit is contained in:
@@ -52,10 +52,10 @@
|
||||
der.is_delete = '0'
|
||||
AND der.status = '10'
|
||||
<if test="begin_time != null and begin_time != ''">
|
||||
and der.create_time <= #{begin_time}
|
||||
and der.create_time >= #{begin_time}
|
||||
</if>
|
||||
<if test="end_time != null and end_time != ''">
|
||||
and der.create_time >= #{end_time}
|
||||
and der.create_time <= #{end_time}
|
||||
</if>
|
||||
<if test="sale_code != null and sale_code != ''">
|
||||
and der.sale_code LIKE '%${sale_code}%'
|
||||
|
||||
@@ -19,6 +19,8 @@ public enum SHUTEnum {
|
||||
BUSI_CLASSS_CODE(MapOf.of("拆盘", "01", "拼盘", "02")),
|
||||
//单据类型
|
||||
BILL_TYPE(MapOf.of("普通拆盘", "51", "普通拼盘", "52")),
|
||||
//单据类型
|
||||
REGION_CODE(MapOf.of("半成品拼盘区域", "A1_BCP_PP")),
|
||||
//单据状态
|
||||
BILL_STATUS(MapOf.of("生成", "10", "提交", "20", "执行中", "30", "确认", "60", "完成", "99")),
|
||||
//单据状态
|
||||
|
||||
@@ -50,8 +50,8 @@ public class PdaStCpInController {
|
||||
}
|
||||
|
||||
@PostMapping("/getMaterial")
|
||||
@Log("查询入库点下拉框")
|
||||
@ApiOperation("查询入库点下拉框")
|
||||
@Log("查询单据物料")
|
||||
@ApiOperation("查询单据物料")
|
||||
public ResponseEntity<Object> getMaterial(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaStCpInService.getMaterial(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@@ -4,11 +4,13 @@ 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.storage.service.storage.IStIvtBsrealstorattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr;
|
||||
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.CHECKEnum;
|
||||
import org.nl.wms.storage_manage.IOSEnum;
|
||||
import org.nl.wms.storage_manage.pda.PDAEnum;
|
||||
import org.nl.wms.storage_manage.pda.service.PdaStBcpCheckService;
|
||||
@@ -80,7 +82,9 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public JSONObject create(JSONObject whereJson) {
|
||||
public JSONObject create(JSONObject whereJson1) {
|
||||
|
||||
JSONObject whereJson = whereJson1.getJSONObject("from");
|
||||
|
||||
// 组织主表数据
|
||||
JSONObject param = new JSONObject();
|
||||
@@ -103,7 +107,7 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService {
|
||||
row.put("struct_name", json.getString("struct_name"));
|
||||
row.put("storagevehicle_code", json.getString("storagevehicle_code"));
|
||||
row.put("material_id", json.getString("material_id"));
|
||||
row.put("base_qty", json.getString("base_qty"));
|
||||
row.put("base_qty", json.getString("canuse_qty"));
|
||||
row.put("qty_unit_id", json.getString("qty_unit_id"));
|
||||
row.put("qty_unit_name", json.getString("qty_unit_name"));
|
||||
|
||||
@@ -146,7 +150,14 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService {
|
||||
@Override
|
||||
@Transactional
|
||||
public JSONObject sendTask(JSONObject whereJson) {
|
||||
iStIvtCheckmstBcpService.issueTask(whereJson);
|
||||
JSONObject row = whereJson.getJSONObject("row");
|
||||
|
||||
if (!row.getString("status").equals(CHECKEnum.DTL_STATUS.code("生成"))) {
|
||||
throw new BadRequestException("当前明细已盘点不可下发!");
|
||||
}
|
||||
|
||||
row.put("point_code", whereJson.getString("point_code"));
|
||||
iStIvtCheckmstBcpService.issueTask(row);
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("data", "");
|
||||
@@ -157,7 +168,7 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService {
|
||||
@Override
|
||||
@Transactional
|
||||
public JSONObject confirm(JSONObject whereJson) {
|
||||
JSONArray rows = whereJson.getJSONArray("rows");
|
||||
JSONArray rows = whereJson.getJSONArray("row");
|
||||
|
||||
List<StIvtCheckdtlBcp> dtlList = JSON.parseArray(JSON.toJSONString(rows), StIvtCheckdtlBcp.class);
|
||||
|
||||
@@ -175,7 +186,7 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService {
|
||||
param.put("row",row);
|
||||
param.put("rows", JSONArray.parseArray(JSON.toJSONString(list)));
|
||||
|
||||
iStIvtCheckmstBcpService.confirm(param);
|
||||
iStIvtCheckmstBcpService.pdaConfirm(param);
|
||||
}
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
@@ -186,7 +197,13 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public JSONObject confirmOffer(JSONObject whereJson) {
|
||||
public JSONObject confirmOffer(JSONObject whereJson1) {
|
||||
JSONObject whereJson = whereJson1.getJSONObject("row");
|
||||
|
||||
if (whereJson.getString("status").equals(CHECKEnum.DTL_STATUS.code("生成"))) {
|
||||
throw new BadRequestException("请先盘点");
|
||||
}
|
||||
|
||||
JSONObject param = new JSONObject();
|
||||
|
||||
JSONObject form = new JSONObject();
|
||||
@@ -204,7 +221,13 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public JSONObject confirmFinance(JSONObject whereJson) {
|
||||
public JSONObject confirmFinance(JSONObject whereJson1) {
|
||||
JSONObject whereJson = whereJson1.getJSONObject("row");
|
||||
|
||||
if (whereJson.getString("status").equals(CHECKEnum.DTL_STATUS.code("生成"))) {
|
||||
throw new BadRequestException("请先盘点");
|
||||
}
|
||||
|
||||
JSONObject param = new JSONObject();
|
||||
|
||||
JSONObject form = new JSONObject();
|
||||
|
||||
@@ -4,10 +4,12 @@ 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.storage.service.storage.IStIvtBsrealstorattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr;
|
||||
import org.nl.wms.storage_manage.IOSEnum;
|
||||
import org.nl.wms.storage_manage.SHUTEnum;
|
||||
import org.nl.wms.storage_manage.pda.service.PdaStBcpShutService;
|
||||
import org.nl.wms.storage_manage.semimanage.service.shutFrame.IStIvtShutframeinvBcpService;
|
||||
import org.nl.wms.system_manage.service.dict.ISysDictService;
|
||||
@@ -55,7 +57,7 @@ public class PdaStBcpShutServiceImpl implements PdaStBcpShutService {
|
||||
|
||||
@Override
|
||||
public JSONObject getBillType() {
|
||||
List<Dict> dictList = iSysDictService.getDictByName("SHUTFRAME_BILL_STATUS");
|
||||
List<Dict> dictList = iSysDictService.getDictByName("ST_INV_TYPE_SF");
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("data", JSONArray.parseArray(JSON.toJSONString(dictList)));
|
||||
@@ -76,7 +78,14 @@ public class PdaStBcpShutServiceImpl implements PdaStBcpShutService {
|
||||
@Override
|
||||
@Transactional
|
||||
public JSONObject confirm(JSONObject whereJson) {
|
||||
iStIvtShutframeinvBcpService.confirmOne(whereJson);
|
||||
|
||||
JSONObject row = whereJson.getJSONObject("row");
|
||||
|
||||
if (!row.getString("work_status").equals(SHUTEnum.WORK_STATUS.code("移出确认"))) {
|
||||
throw new BadRequestException("执行状态不为【移出确认】!");
|
||||
}
|
||||
|
||||
iStIvtShutframeinvBcpService.confirmOne(row);
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("data", "");
|
||||
|
||||
@@ -114,7 +114,9 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public JSONObject confirmIn(JSONObject whereJson) {
|
||||
public JSONObject confirmIn(JSONObject whereJson1) {
|
||||
JSONObject whereJson = whereJson1.getJSONObject("from");
|
||||
|
||||
/*
|
||||
* 入库单创建
|
||||
*/
|
||||
@@ -141,7 +143,7 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
|
||||
JSONObject paramDiv = createDivData(whereJson);
|
||||
|
||||
// 2.调用PC成品入库服务分配货位
|
||||
iStIvtIostorinvCpService.divStruct(whereJson);
|
||||
iStIvtIostorinvCpService.divStruct(paramDiv);
|
||||
|
||||
/*
|
||||
* 设置起点
|
||||
|
||||
@@ -37,10 +37,10 @@
|
||||
and mst.stor_id = #{stor_id}
|
||||
</if>
|
||||
<if test="begin_time != null and begin_time != ''">
|
||||
and mst.create_time <= #{begin_time}
|
||||
and mst.create_time >= #{begin_time}
|
||||
</if>
|
||||
<if test="end_time != null and end_time != ''">
|
||||
and mst.create_time >= #{end_time}
|
||||
and mst.create_time <= #{end_time}
|
||||
</if>
|
||||
<if test="bill_type != null and bill_type != ''">
|
||||
and mst.bill_type = #{bill_type}
|
||||
|
||||
@@ -45,6 +45,8 @@ public interface IStIvtCheckmstBcpService extends IService<StIvtCheckmstBcp> {
|
||||
|
||||
void confirm(JSONObject jo);
|
||||
|
||||
void pdaConfirm(JSONObject jo);
|
||||
|
||||
void process0(JSONObject jo);
|
||||
|
||||
void process1(JSONObject jo);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
dtl.*,
|
||||
mb.material_code,
|
||||
mb.material_spec,
|
||||
dtl.base_qty / mb.net_weight AS qty,
|
||||
ROUND((dtl.base_qty * 1000 ) / mb.net_weight,3) AS qty,
|
||||
mst.check_type,
|
||||
mst.create_time,
|
||||
mst.create_name
|
||||
@@ -26,10 +26,10 @@
|
||||
and mst.stor_id = #{stor_id}
|
||||
</if>
|
||||
<if test="begin_time != null and begin_time != ''">
|
||||
and mst.create_time <= #{begin_time}
|
||||
and mst.create_time >= #{begin_time}
|
||||
</if>
|
||||
<if test="end_time != null and end_time != ''">
|
||||
and mst.create_time >= #{end_time}
|
||||
and mst.create_time <= #{end_time}
|
||||
</if>
|
||||
<if test="material_code != null and material_code != ''">
|
||||
and (mb.material_code LIKE '%${material_code}%' or
|
||||
@@ -40,7 +40,7 @@
|
||||
attr.struct_name LIKE '%${struct_code}%')
|
||||
</if>
|
||||
<if test="storagevehicle_code != null and storagevehicle_code != ''">
|
||||
and attr.struct_code LIKE '%${storagevehicle_code}%'
|
||||
and attr.storagevehicle_code LIKE '%${storagevehicle_code}%'
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
@@ -274,6 +274,94 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
|
||||
this.updateById(jo_mst);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void pdaConfirm(JSONObject whereJson) {
|
||||
JSONObject form = whereJson.getJSONObject("row");
|
||||
JSONArray rows = whereJson.getJSONArray("rows");
|
||||
|
||||
StIvtCheckmstBcp jo_mst = this.getOne(new QueryWrapper<StIvtCheckmstBcp>().eq("check_id", form.getString("check_id")).in("status", new String[]{"10", "30"}));
|
||||
if (jo_mst == null) {
|
||||
throw new BadRequestException("盘点单状态异常!");
|
||||
}
|
||||
//定义需要需要更新的的点位集合
|
||||
HashSet<String> set = new HashSet<>();
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
JSONObject jo = rows.getJSONObject(i);
|
||||
|
||||
String status = jo.getString("status");
|
||||
StIvtCheckdtlBcp dtl = jo.toJavaObject(StIvtCheckdtlBcp.class);
|
||||
double base_qty = jo.getDoubleValue("base_qty");
|
||||
//已盘点过的明细不再处理
|
||||
if ("05,06,07,99".contains(status)) {
|
||||
checkdtlBcpService.updateById(dtl);
|
||||
continue;
|
||||
} else {
|
||||
checkdtlBcpService.remove(
|
||||
new QueryWrapper<StIvtCheckdtlBcp>().lambda()
|
||||
.eq(StIvtCheckdtlBcp::getCheckdtl_id, jo.getString("checkdtl_id"))
|
||||
);
|
||||
}
|
||||
|
||||
dtl.setStatus(CHECKEnum.DTL_STATUS.code("已盘点"));
|
||||
dtl.setCheck_optid(SecurityUtils.getCurrentUserId());
|
||||
dtl.setCheck_optname(SecurityUtils.getCurrentNickName());
|
||||
dtl.setCheck_time(DateUtil.now());
|
||||
double fac_qty = jo.getDoubleValue("fac_qty");
|
||||
//判断盈亏
|
||||
if (fac_qty > base_qty) {
|
||||
dtl.setCheck_result("2");
|
||||
} else if (fac_qty < base_qty) {
|
||||
dtl.setCheck_result("1");
|
||||
} else {
|
||||
dtl.setCheck_result("0");
|
||||
dtl.setStatus(CHECKEnum.DTL_STATUS.code("确认完成"));
|
||||
}
|
||||
if (StrUtil.isEmpty(jo.getString("checkdtl_id"))) {
|
||||
jo.put("checkdtl_id", IdUtil.getStringId());
|
||||
}
|
||||
checkdtlBcpService.save(dtl);
|
||||
set.add(dtl.getStruct_id());
|
||||
|
||||
// 判断是否已下发,是则生成回去的任务
|
||||
if (dtl.getIs_down().equals("1") && dtl.getStatus().equals(CHECKEnum.DTL_STATUS.code("确认完成"))) {
|
||||
createBackTask(dtl,jo_mst.getWorkshop_id());
|
||||
dtl.setStatus(CHECKEnum.DTL_STATUS.code("已盘点"));
|
||||
dtl.setIs_down("2");
|
||||
checkdtlBcpService.updateById(dtl);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
jo_mst.setIs_nok(false);
|
||||
List<StIvtCheckdtlBcp> dtl_list = checkdtlBcpService.list(new QueryWrapper<StIvtCheckdtlBcp>().eq("check_id", form.getString("check_id")).ne("check_result", "0"));
|
||||
if (dtl_list.size() != 0) {
|
||||
jo_mst.setIs_nok(true);
|
||||
}
|
||||
jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("盘点中"));
|
||||
List<StIvtCheckdtlBcp> finish_list = checkdtlBcpService.list(new QueryWrapper<StIvtCheckdtlBcp>().eq("check_id", form.getString("check_id")).in("status", new String[]{"99", "07"}));
|
||||
//说明全部确认
|
||||
if (finish_list.size() == jo_mst.getDtl_num().intValue()) {
|
||||
// 判断是否有任务
|
||||
List<StIvtCheckdtlBcp> collect = finish_list.stream()
|
||||
.filter(item -> Integer.parseInt(item.getIs_down()) > 0)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (ObjectUtil.isEmpty(collect)) {
|
||||
checkdtlBcpService.update(new UpdateWrapper<StIvtCheckdtlBcp>().set("status", "99").eq("check_id", form.getString("check_id")));
|
||||
|
||||
jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("完成"));
|
||||
jo_mst.setConfirm_optid(SecurityUtils.getCurrentUserId());
|
||||
jo_mst.setConfirm_optname(SecurityUtils.getCurrentNickName());
|
||||
jo_mst.setConfirm_time(DateUtil.now());
|
||||
//锁定起点点位、仓位
|
||||
set.forEach(struct_id -> structattrService.update(new UpdateWrapper<StIvtStructattr>().set("lock_type", "0").set("inv_code", "").eq("struct_id", struct_id)));
|
||||
}
|
||||
|
||||
}
|
||||
this.updateById(jo_mst);
|
||||
}
|
||||
|
||||
/*
|
||||
创建回去的任务
|
||||
*/
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
dtl.fact_qty,
|
||||
dtl.turnin_struct_code,
|
||||
dtl.storagevehicle_code_in,
|
||||
dtl.work_status,
|
||||
dtl.qty,
|
||||
mb.material_code,
|
||||
mb.material_spec
|
||||
@@ -58,10 +59,10 @@
|
||||
and mst.stor_id = #{stor_id}
|
||||
</if>
|
||||
<if test="begin_time != null and begin_time != ''">
|
||||
and mst.create_time <= #{begin_time}
|
||||
and mst.create_time >= #{begin_time}
|
||||
</if>
|
||||
<if test="end_time != null and end_time != ''">
|
||||
and mst.create_time >= #{end_time}
|
||||
and mst.create_time <= #{end_time}
|
||||
</if>
|
||||
<if test="bill_type != null and bill_type != ''">
|
||||
and mst.bill_type = #{bill_type}
|
||||
@@ -71,7 +72,7 @@
|
||||
mb.material_name LIKE '%${material_code}%')
|
||||
</if>
|
||||
<if test="storagevehicle_id_in != null and storagevehicle_id_in != ''">
|
||||
and (dtl.storagevehicle_id_in LIKE '%${storagevehicle_id_in}%' or
|
||||
and (dtl.storagevehicle_code_in LIKE '%${storagevehicle_id_in}%' or
|
||||
dtl.storagevehicle_code LIKE '%${storagevehicle_id_in}%')
|
||||
</if>
|
||||
</where>
|
||||
|
||||
@@ -303,7 +303,7 @@ public class StIvtShutframeinvBcpServiceImpl extends ServiceImpl<StIvtShutframei
|
||||
|
||||
//查询可用的半成品移出点位
|
||||
Map map = new HashMap<>();
|
||||
map.put("region_code", "A1_BCP_PD");
|
||||
map.put("region_code", SHUTEnum.REGION_CODE.code("半成品拼盘区域"));
|
||||
List<Map> point_list = pointMapper.canUsePoint(map);
|
||||
|
||||
if (point_list.size() < 2) {
|
||||
|
||||
@@ -217,7 +217,8 @@
|
||||
sa.struct_id,
|
||||
sa.struct_code,
|
||||
sa.struct_name,
|
||||
sa.storagevehicle_code
|
||||
sa.storagevehicle_code,
|
||||
ROUND((ivt.canuse_qty * 1000) / unit_weight,3) AS qty
|
||||
FROM
|
||||
st_ivt_structivt_bcp ivt
|
||||
LEFT JOIN md_me_materialbase mb ON mb.material_id = ivt.material_id
|
||||
|
||||
@@ -191,7 +191,7 @@ const defaultForm = {
|
||||
bill_status: '10',
|
||||
total_qty: '0',
|
||||
detail_count: '0',
|
||||
bill_type: '51',
|
||||
bill_type: '52',
|
||||
remark: '',
|
||||
biz_date: '',
|
||||
create_mode: '',
|
||||
|
||||
Reference in New Issue
Block a user