add:1.增加CTU线边库手持出库确认;2.ERP单据同步修改已存在未领数量的单据;3.生产入库单自动创建反写生产订单数量自动关单;4.生产领料单自动创建反写用料清单已领数量,未领数量自动关单;
This commit is contained in:
@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.github.javaparser.utils.Log;
|
import com.github.javaparser.utils.Log;
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import com.kingdee.bos.webapi.entity.*;
|
import com.kingdee.bos.webapi.entity.*;
|
||||||
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
import com.github.javaparser.utils.Log;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess;
|
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess;
|
||||||
@@ -18,7 +17,7 @@ import org.springframework.stereotype.Service;
|
|||||||
/*
|
/*
|
||||||
* @author ZZQ
|
* @author ZZQ
|
||||||
* @Date 2024/5/6 14:34
|
* @Date 2024/5/6 14:34
|
||||||
* 回传服务
|
* CTU回传服务
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -34,15 +33,10 @@ public class CtuProcessHandler implements ClassProcess {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public JSONObject process(JSONObject from, JSONObject param) {
|
public JSONObject process(JSONObject from, JSONObject param) {
|
||||||
String id = from.getString("id");
|
|
||||||
PmFormData pmFormData = iPmFormDataService.getById(id);
|
|
||||||
JSONObject vehicleMater = from.getJSONObject("vehicleMater");
|
JSONObject vehicleMater = from.getJSONObject("vehicleMater");
|
||||||
if (vehicleMater == null) {
|
if (vehicleMater == null) {
|
||||||
LambdaUpdateWrapper<PmFormData> updateWrapper = new LambdaUpdateWrapper<>();
|
|
||||||
updateWrapper.eq(PmFormData::getId, pmFormData.getId());
|
|
||||||
updateWrapper.set(PmFormData::getRemark, "CTU出库用料单号异常:未获取到物料载具信息vehicleMater,from数据为:" + JSON.toJSONString(from));
|
|
||||||
iPmFormDataService.update(updateWrapper);
|
|
||||||
log.error("CTU出库用料单号异常:未获取到物料载具信息vehicleMater,from数据为:" + JSON.toJSONString(from));
|
log.error("CTU出库用料单号异常:未获取到物料载具信息vehicleMater,from数据为:" + JSON.toJSONString(from));
|
||||||
|
return from;
|
||||||
}
|
}
|
||||||
JSONObject sourceFormData = from.getJSONObject("source_form_data");
|
JSONObject sourceFormData = from.getJSONObject("source_form_data");
|
||||||
if (sourceFormData == null) {
|
if (sourceFormData == null) {
|
||||||
@@ -50,25 +44,36 @@ public class CtuProcessHandler implements ClassProcess {
|
|||||||
.set("prd_ppbom_no", "CTU出库用料单号异常:未获取到源单信息sourceFormData,from数据为:" + JSON.toJSONString(from))
|
.set("prd_ppbom_no", "CTU出库用料单号异常:未获取到源单信息sourceFormData,from数据为:" + JSON.toJSONString(from))
|
||||||
.eq("id", vehicleMater.getString("id")));
|
.eq("id", vehicleMater.getString("id")));
|
||||||
log.error("CTU出库用料单号异常:未获取到源单信息sourceFormData,from数据为:" + JSON.toJSONString(from));
|
log.error("CTU出库用料单号异常:未获取到源单信息sourceFormData,from数据为:" + JSON.toJSONString(from));
|
||||||
}
|
return from;
|
||||||
String billCode = sourceFormData.getString("code");
|
|
||||||
if (StringUtils.isBlank(billCode)) {
|
|
||||||
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
|
||||||
.set("prd_ppbom_no", "CTU出库用料单号异常:未获取到源单号billCode,from数据为:" + JSON.toJSONString(from))
|
|
||||||
.eq("id", vehicleMater.getString("id")));
|
|
||||||
log.error("CTU出库用料单号异常:未获取到源单号billCode,from数据为:" + JSON.toJSONString(from));
|
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
//更新物料载具信息的出库单据号
|
String billCode = sourceFormData.getString("code");
|
||||||
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
String vehicleId = StringUtils.isNotBlank(sourceFormData.getString("vehicle_id")) ? sourceFormData.getString("vehicle_id") : vehicleMater.getString("id");
|
||||||
.set("prd_ppbom_no", billCode)
|
if (StringUtils.isBlank(vehicleId)) {
|
||||||
.eq("id", vehicleMater.getString("id")));
|
LambdaUpdateWrapper<PmFormData> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
updateWrapper.eq(PmFormData::getId, sourceFormData.getString("id"));
|
||||||
|
updateWrapper.set(PmFormData::getRemark, "更新CTU物料载具信息的出库单据号失败,原因为:载具物料表为空,载具id为空,无法更新用料清单号,form数据:" + JSON.toJSONString(from));
|
||||||
|
iPmFormDataService.update(updateWrapper);
|
||||||
|
log.error("更新CTU物料载具信息的出库单据号失败,原因为:载具物料表为空,载具id为空,无法更新用料清单号,form数据:" + JSON.toJSONString(from));
|
||||||
|
} else {
|
||||||
|
if (StringUtils.isNotBlank(billCode)) {
|
||||||
|
//更新物料载具信息的出库单据号
|
||||||
|
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
||||||
|
.set("prd_ppbom_no", billCode)
|
||||||
|
.eq("id", vehicleId));
|
||||||
|
} else {
|
||||||
|
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
||||||
|
.set("prd_ppbom_no", "CTU出库用料单号异常:未获取到源单号billCode,from数据为:" + JSON.toJSONString(from))
|
||||||
|
.eq("id", vehicleId));
|
||||||
|
log.error("CTU出库用料单号异常:未获取到源单号billCode,from数据为:" + JSON.toJSONString(from));
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
LambdaUpdateWrapper<PmFormData> updateWrapper = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<PmFormData> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
updateWrapper.eq(PmFormData::getId, sourceFormData.getString("id"));
|
updateWrapper.eq(PmFormData::getId, sourceFormData.getString("id"));
|
||||||
updateWrapper.set(PmFormData::getRemark, "更新物料载具信息的出库单据号失败,原因为:" + ex.getMessage());
|
updateWrapper.set(PmFormData::getRemark, "更新CTU物料载具信息的出库单据号失败,原因为:" + ex.getMessage());
|
||||||
iPmFormDataService.update(updateWrapper);
|
iPmFormDataService.update(updateWrapper);
|
||||||
Log.error(ex.getMessage());
|
log.error("更新CTU物料载具信息的出库单据号失败,原因为:" + ex.getMessage() + ",form数据:" + JSON.toJSONString(from));
|
||||||
}
|
}
|
||||||
return from;
|
return from;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import javax.annotation.Resource;
|
|||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -95,9 +96,11 @@ public class SyncReceiptProcessHandler implements ClassProcess {
|
|||||||
if (isSuccess) {
|
if (isSuccess) {
|
||||||
updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成"));
|
updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成"));
|
||||||
updateWrapper.set(PmFormData::getRemark, "回执单创建成功,回传Erp数据为:" + responseStatus.getJSONArray("SuccessEntitys").toJSONString());
|
updateWrapper.set(PmFormData::getRemark, "回执单创建成功,回传Erp数据为:" + responseStatus.getJSONArray("SuccessEntitys").toJSONString());
|
||||||
|
Log.error("回传Erp数据为:" + json + ",传输数据为:");
|
||||||
} else {
|
} else {
|
||||||
updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("暂停"));
|
updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("暂停"));
|
||||||
updateWrapper.set(PmFormData::getRemark,"回执单创建失败,原因为:"+errorMessages + ",回传Erp数据为:" + json);
|
updateWrapper.set(PmFormData::getRemark, "回执单创建失败,原因为:" + errorMessages + ",回传Erp数据为:" + json);
|
||||||
|
Log.error("回传Erp数据为:" + json + ",传输数据为:");
|
||||||
}
|
}
|
||||||
iPmFormDataService.update(updateWrapper);
|
iPmFormDataService.update(updateWrapper);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
@@ -116,11 +119,9 @@ public class SyncReceiptProcessHandler implements ClassProcess {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
JSONArray fEntityArray = formData.getJSONObject("Model").getJSONArray("FEntity");
|
JSONArray fEntityArray = formData.getJSONObject("Model").getJSONArray("FEntity");
|
||||||
//判断生产入库的手工录入与MRP生成方式需回传不同的源单信息
|
|
||||||
if ("RECEIPT_PRD".equals(formType)) {
|
if ("RECEIPT_PRD".equals(formType)) {
|
||||||
for (int i = 0; i < fEntityArray.size(); i++) {
|
for (int i = 0; i < fEntityArray.size(); i++) {
|
||||||
JSONObject fEntity = fEntityArray.getJSONObject(i);
|
JSONObject fEntity = fEntityArray.getJSONObject(i);
|
||||||
//查询工序汇报单
|
|
||||||
ErpQuery reportQuery = new ErpQuery();
|
ErpQuery reportQuery = new ErpQuery();
|
||||||
reportQuery.setFilterString("FMoNumber ='" + fEntity.getString("FMoBillNo") + "'");
|
reportQuery.setFilterString("FMoNumber ='" + fEntity.getString("FMoBillNo") + "'");
|
||||||
reportQuery.setOrderString("FId desc");
|
reportQuery.setOrderString("FId desc");
|
||||||
@@ -130,36 +131,63 @@ public class SyncReceiptProcessHandler implements ClassProcess {
|
|||||||
throw new BadRequestException("该生产订单未找到对应生产汇报单");
|
throw new BadRequestException("该生产订单未找到对应生产汇报单");
|
||||||
}
|
}
|
||||||
JSONArray optRptEntry = jsonArray.getJSONObject(0).getJSONArray("OptRptEntry");
|
JSONArray optRptEntry = jsonArray.getJSONObject(0).getJSONArray("OptRptEntry");
|
||||||
if (fEntity.containsKey("FSrcEntryId")) {
|
|
||||||
//增加源单分录id
|
|
||||||
fEntity.put("FSrcEntryId", optRptEntry.getJSONObject(0).getString("SrcEntryId"));
|
|
||||||
fEntity.put("FSrcEntrySeq", optRptEntry.getJSONObject(0).getString("SrcEntrySeq"));
|
|
||||||
fEntity.put("FSrcBillType", "SFC_OperationReport");
|
|
||||||
}
|
|
||||||
Map<String, Object> linkedMap = new LinkedHashMap<>();
|
Map<String, Object> linkedMap = new LinkedHashMap<>();
|
||||||
|
//移除重构源单Id
|
||||||
|
fEntity.remove("FSrcEntryId");
|
||||||
for (String key : fEntity.keySet()) {
|
for (String key : fEntity.keySet()) {
|
||||||
linkedMap.put(key, fEntity.get(key));
|
linkedMap.put(key, fEntity.get(key));
|
||||||
}
|
}
|
||||||
|
//明细字段顺序排列
|
||||||
Map<String, Object> tempMap = new LinkedHashMap<>();
|
Map<String, Object> tempMap = new LinkedHashMap<>();
|
||||||
for (Map.Entry<String, Object> entry : linkedMap.entrySet()) {
|
for (Map.Entry<String, Object> entry : linkedMap.entrySet()) {
|
||||||
tempMap.put(entry.getKey(), entry.getValue());
|
tempMap.put(entry.getKey(), entry.getValue());
|
||||||
if ("FMoEntryId".equals(entry.getKey())) {
|
if ("FMoEntrySeq".equals(entry.getKey())) {
|
||||||
//源单编号为工序汇报单号
|
|
||||||
tempMap.put("FSrcBillNo", jsonArray.getJSONObject(0).getString("BillNo"));
|
tempMap.put("FSrcBillNo", jsonArray.getJSONObject(0).getString("BillNo"));
|
||||||
|
tempMap.put("FSrcEntryId", optRptEntry.getJSONObject(0).getString("Id"));
|
||||||
|
tempMap.put("FSrcEntrySeq", optRptEntry.getJSONObject(0).getString("Seq"));
|
||||||
|
tempMap.put("FSrcBillType", "SFC_OperationReport");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
JSONArray fEntityLinkArray = new JSONArray();
|
||||||
|
JSONObject fEntityLink = new JSONObject();
|
||||||
|
fEntityLink.put("FEntity_Link_FRuleId", "SFC_OPTRPT2INSTOCK");
|
||||||
|
fEntityLink.put("FEntity_Link_FSBillId", jsonArray.getJSONObject(0).getString("Id"));
|
||||||
|
fEntityLink.put("FEntity_Link_FSId", optRptEntry.getJSONObject(0).getString("Id"));
|
||||||
|
fEntityLink.put("FEntity_Link_FSTableName", "T_SFC_OPTRPTENTRY");
|
||||||
|
fEntityLink.put("FEntity_Link_FBasePrdRealQtyOld", fEntity.getString("FMustQty"));
|
||||||
|
fEntityLink.put("FEntity_Link_FBasePrdRealQty", fEntity.getString("FMustQty"));
|
||||||
|
fEntityLinkArray.add(fEntityLink);
|
||||||
|
tempMap.put("FEntity_Link", fEntityLinkArray);
|
||||||
fEntity.clear();
|
fEntity.clear();
|
||||||
fEntity.putAll(tempMap);
|
fEntity.putAll(tempMap);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//判断生产领料单的批次与辅助单位
|
//判断生产领料单的批次与辅助单位
|
||||||
if ("RECEIPT_PickMtrl".equals(formType)) {
|
if ("RECEIPT_PickMtrl".equals(formType)) {
|
||||||
for (int i = 0; i < fEntityArray.size(); i++) {
|
for (int i = 0; i < fEntityArray.size(); i++) {
|
||||||
JSONObject fEntity = fEntityArray.getJSONObject(i);
|
JSONObject fEntity = fEntityArray.getJSONObject(i);
|
||||||
List<MdMeMaterialbase> materialList = iMdMeMaterialbaseService.list(new LambdaQueryWrapper<MdMeMaterialbase>().eq(MdMeMaterialbase::getMaterial_code,JSON.parseObject(fEntity.getString("FMaterialId")).getString("FNumber")));
|
ErpQuery prdQuery = new ErpQuery();
|
||||||
|
prdQuery.setFilterString("FBillNo ='" + fEntity.getString("FPPBomBillNo") + "'");
|
||||||
|
prdQuery.setOrderString("FId desc");
|
||||||
|
prdQuery.setFormId("PRD_PPBOM");
|
||||||
|
JSONArray jsonArray = erpServiceUtils.queryBills(prdQuery);
|
||||||
|
if (CollectionUtils.isEmpty(jsonArray)) {
|
||||||
|
throw new BadRequestException("该领料出库单未找到对应用生产用料清单");
|
||||||
|
}
|
||||||
|
JSONArray prdEntry = jsonArray.getJSONObject(0).getJSONArray("PPBomEntry");
|
||||||
|
JSONObject entity;
|
||||||
|
Optional<JSONObject> filterJsonObject = prdEntry.stream()
|
||||||
|
.map(obj -> (JSONObject) obj)
|
||||||
|
.filter(r -> fEntity.getString("FPPBomEntryId").equals(r.getString("Id")))
|
||||||
|
.findFirst();
|
||||||
|
if (filterJsonObject.isPresent()) {
|
||||||
|
entity = filterJsonObject.get();
|
||||||
|
} else {
|
||||||
|
throw new BadRequestException("该领料出库单的对应用生产用料清单未找到对应的物料明细");
|
||||||
|
}
|
||||||
|
List<MdMeMaterialbase> materialList = iMdMeMaterialbaseService.list(new LambdaQueryWrapper<MdMeMaterialbase>().eq(MdMeMaterialbase::getMaterial_code, JSON.parseObject(fEntity.getString("FMaterialId")).getString("FNumber")));
|
||||||
if (ObjectUtil.isEmpty(materialList)) {
|
if (ObjectUtil.isEmpty(materialList)) {
|
||||||
throw new BadRequestException("回传失败:查询物料信息,物料编码不存在:"+JSON.parseObject(fEntity.getString("FMaterialId")).getString("FNumber"));
|
throw new BadRequestException("回传失败:查询物料信息,物料编码不存在:" + JSON.parseObject(fEntity.getString("FMaterialId")).getString("FNumber"));
|
||||||
}
|
}
|
||||||
MdMeMaterialbase materialInfo = materialList.get(0);
|
MdMeMaterialbase materialInfo = materialList.get(0);
|
||||||
//没有启用批次号
|
//没有启用批次号
|
||||||
@@ -181,12 +209,26 @@ public class SyncReceiptProcessHandler implements ClassProcess {
|
|||||||
fUnit.put("FNumber", materialInfo.getAssist_unit_id());
|
fUnit.put("FNumber", materialInfo.getAssist_unit_id());
|
||||||
tempMap.put("FSecUnitId", fUnit);
|
tempMap.put("FSecUnitId", fUnit);
|
||||||
}
|
}
|
||||||
// if ("FStockId".equals(entry.getKey())) {
|
if ("FActualQty".equals(entry.getKey())) {
|
||||||
// JSONObject fStockId = new JSONObject();
|
tempMap.put("FSrcBillType", "PRD_PPBOM");
|
||||||
// fStockId.put("FNumber", "25");
|
tempMap.put("FSrcBillNo", jsonArray.getJSONObject(0).getString("BillNo"));
|
||||||
// tempMap.put("FStockId", fStockId);
|
tempMap.put("FEntrySrcEnteryId", entity.getString("Id"));
|
||||||
// }
|
tempMap.put("FEntrySrcEntrySeq", entity.getString("Seq"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
JSONArray fEntityLinkArray = new JSONArray();
|
||||||
|
JSONObject fEntityLink = new JSONObject();
|
||||||
|
fEntityLink.put("FEntity_Link_FFlowLineId", 0);
|
||||||
|
fEntityLink.put("FEntity_Link_FBaseActualQty", fEntity.getString("FActualQty"));
|
||||||
|
fEntityLink.put("FEntity_Link_FSId",entity.getString("Id"));
|
||||||
|
fEntityLink.put("FEntity_Link_FBaseActualQtyOld", fEntity.getString("FActualQty"));
|
||||||
|
fEntityLink.put("FEntity_Link_FRuleId", "PRD_PPBOM2PICKMTRL_NORMAL");
|
||||||
|
fEntityLink.put("FEntity_Link_FSTableId", 0);
|
||||||
|
fEntityLink.put("FEntity_Link_FFlowId","");
|
||||||
|
fEntityLink.put("FEntity_Link_FSBillId", jsonArray.getJSONObject(0).getString("Id"));
|
||||||
|
fEntityLink.put("FEntity_Link_FSTableName", "T_PRD_PPBOMENTRY");
|
||||||
|
fEntityLinkArray.add(fEntityLink);
|
||||||
|
tempMap.put("FEntity_Link", fEntityLinkArray);
|
||||||
fEntity.clear();
|
fEntity.clear();
|
||||||
fEntity.putAll(tempMap);
|
fEntity.putAll(tempMap);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,5 +86,9 @@ public class MdGruopDick implements Serializable {
|
|||||||
private JSONObject form_data = new JSONObject();
|
private JSONObject form_data = new JSONObject();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String material_code;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
<result property="id" column="id"/>
|
<result property="id" column="id"/>
|
||||||
<result property="code" column="code"/>
|
<result property="code" column="code"/>
|
||||||
<result property="vehicle_code" column="vehicle_code"/>
|
<result property="vehicle_code" column="vehicle_code"/>
|
||||||
|
<result property="material_code" column="material_code"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="source_form_type" column="source_form_type"/>
|
<result property="source_form_type" column="source_form_type"/>
|
||||||
@@ -19,27 +20,30 @@
|
|||||||
|
|
||||||
<select id="query" resultMap="BaseResultMap">
|
<select id="query" resultMap="BaseResultMap">
|
||||||
SELECT
|
SELECT
|
||||||
*
|
m.material_code,
|
||||||
|
d.*
|
||||||
FROM
|
FROM
|
||||||
md_group_dick
|
md_group_dick d
|
||||||
|
left join md_pb_vehiclemater v on d.id = v.group_id
|
||||||
|
left join md_me_materialbase m on v.material_id = m.material_id
|
||||||
<where>
|
<where>
|
||||||
<if test="query.material_code != null and query.material_code != ''">
|
<if test="query.material_code != null and query.material_code != ''">
|
||||||
and material_code LIKE '%${query.material_code}%'
|
and m.material_code LIKE '%${query.material_code}%'
|
||||||
</if>
|
</if>
|
||||||
<if test="query.vehicle_code != null and query.vehicle_code != ''">
|
<if test="query.vehicle_code != null and query.vehicle_code != ''">
|
||||||
and vehicle_code LIKE '%${query.vehicle_code}%'
|
and d.vehicle_code LIKE '%${query.vehicle_code}%'
|
||||||
</if>
|
</if>
|
||||||
<if test="query.pcsn != null and query.pcsn != ''">
|
<if test="query.pcsn != null and query.pcsn != ''">
|
||||||
and pcsn = #{query.pcsn}
|
and d.pcsn = #{query.pcsn}
|
||||||
</if>
|
</if>
|
||||||
|
|
||||||
<if test="query.status != null and query.status != ''">
|
<if test="query.status != null and query.status != ''">
|
||||||
and status = #{query.status}
|
and d.status = #{query.status}
|
||||||
</if>
|
</if>
|
||||||
<if test="query.form_query != null and query.form_query.size() > 0">
|
<if test="query.form_query != null and query.form_query.size() > 0">
|
||||||
<foreach collection="query.form_query" item="value" index="key" >
|
<foreach collection="query.form_query" item="value" index="key">
|
||||||
<if test="value != null and value != ''">
|
<if test="value != null and value != ''">
|
||||||
and JSON_CONTAINS(form_data, '{"${key}":"${value}"}')
|
and JSON_CONTAINS(d.form_data, '{"${key}":"${value}"}')
|
||||||
</if>
|
</if>
|
||||||
</foreach>
|
</foreach>
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||||||
import com.github.pagehelper.Page;
|
import com.github.pagehelper.Page;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
||||||
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.nl.common.TableDataInfo;
|
import org.nl.common.TableDataInfo;
|
||||||
import org.nl.common.domain.constant.DictConstantPool;
|
import org.nl.common.domain.constant.DictConstantPool;
|
||||||
@@ -89,29 +90,37 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void groupDick(JSONObject forms) {
|
public void groupDick(JSONObject forms) {
|
||||||
List<Map> tableData = (List)forms.remove("item");
|
List<Map> tableData = (List) forms.remove("item");
|
||||||
if (CollectionUtils.isEmpty(forms)){
|
if (CollectionUtils.isEmpty(forms)) {
|
||||||
throw new BadRequestException("组盘失败:入库明细数据不能为空");
|
throw new BadRequestException("组盘失败:入库明细数据不能为空");
|
||||||
}
|
}
|
||||||
JSONObject item0 = new JSONObject(tableData.get(0));
|
JSONObject item0 = new JSONObject(tableData.get(0));
|
||||||
String vehicle0 = item0.getString("vehicle_code");
|
String vehicle0 = item0.getString("vehicle_code");
|
||||||
BmVehicleInfo vehicleInfo = iBmVehicleInfoService.vehileInfo(vehicle0);
|
BmVehicleInfo vehicleInfo = iBmVehicleInfoService.vehileInfo(vehicle0);
|
||||||
if(vehicleInfo==null){
|
if (vehicleInfo == null) {
|
||||||
throw new BadRequestException("组盘失败:载具"+vehicle0+"信息不存在请在载具信息中维护");
|
throw new BadRequestException("组盘失败:载具" + vehicle0 + "信息不存在请在载具信息中维护");
|
||||||
}
|
}
|
||||||
Integer h = vehicleInfo.getH();
|
Integer h = vehicleInfo.getH();
|
||||||
RedissonUtils.lock(()->{
|
RedissonUtils.lock(() -> {
|
||||||
|
//组盘前库存校验
|
||||||
|
QueryWrapper<StIvtStructattr> ivtList = new QueryWrapper<StIvtStructattr>()
|
||||||
|
.eq("vehicle_code", vehicleInfo.getVehicle_code());
|
||||||
|
List<StIvtStructattr> existList = iStIvtStructattrService.list(ivtList);
|
||||||
|
if (ObjectUtils.isNotEmpty(existList)) {
|
||||||
|
throw new BadRequestException(String.format("组盘失败:当前载具号在立库的库位中未出库:%s中,请核查库存记录!", existList.get(0).getStruct_code()));
|
||||||
|
}
|
||||||
|
//组盘前符合条件库位数量校验
|
||||||
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()
|
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()
|
||||||
.eq("is_used", true)
|
.eq("is_used", true)
|
||||||
.eq("lock_type", StatusEnum.LOCK.code("无锁"))
|
.eq("lock_type", StatusEnum.LOCK.code("无锁"))
|
||||||
.eq("stor_code", forms.getString("stor_code"))
|
.eq("stor_code", forms.getString("stor_code"))
|
||||||
.isNull("vehicle_code");
|
.isNull("vehicle_code");
|
||||||
if (h!=null){
|
if (h != null) {
|
||||||
query.ge("h",h);
|
query.ge("h", h);
|
||||||
}
|
}
|
||||||
int structCount = iStIvtStructattrService.count(query);
|
int structCount = iStIvtStructattrService.count(query);
|
||||||
if (structCount< DictConstantPool.STRUCT_COUNT){
|
if (structCount < DictConstantPool.STRUCT_COUNT) {
|
||||||
throw new BadRequestException("入库失败:当前仓库可用库位小于"+DictConstantPool.STRUCT_COUNT);
|
throw new BadRequestException("入库失败:当前仓库可用库位小于" + DictConstantPool.STRUCT_COUNT);
|
||||||
}
|
}
|
||||||
}, StatusEnum.STRATEGY_TYPE.code("入库")+forms.getString("stor_code"),5);
|
}, StatusEnum.STRATEGY_TYPE.code("入库")+forms.getString("stor_code"),5);
|
||||||
|
|
||||||
@@ -218,6 +227,19 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
|
|||||||
@Transactional
|
@Transactional
|
||||||
public void delete(String[] ids) {
|
public void delete(String[] ids) {
|
||||||
if (ids != null && ids.length > 0) {
|
if (ids != null && ids.length > 0) {
|
||||||
|
if (ids.length > 1) {
|
||||||
|
throw new BadRequestException("删除失败:请选择一条数据");
|
||||||
|
}
|
||||||
|
List<MdGruopDick> groupDick = this.list(new QueryWrapper<MdGruopDick>().eq("id", ids[0]));
|
||||||
|
RedissonUtils.lock(() -> {
|
||||||
|
//已产生入库任务或已入库不能删除
|
||||||
|
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()
|
||||||
|
.eq("vehicle_code", groupDick.get(0).getVehicle_code());
|
||||||
|
List<StIvtStructattr> list = iStIvtStructattrService.list(query);
|
||||||
|
if (ObjectUtils.isNotEmpty(list)) {
|
||||||
|
throw new BadRequestException("删除失败:当前料箱号已入库,库存位置为:" + list.get(0).getStruct_code() + ",无法删除!");
|
||||||
|
}
|
||||||
|
}, StatusEnum.STRATEGY_TYPE.code("出库") + groupDick.get(0).getVehicle_code(), 5);
|
||||||
this.removeByIds(Arrays.asList(ids));
|
this.removeByIds(Arrays.asList(ids));
|
||||||
List<MdPbVehicleMater> vehicleMaterList = iMdPbVehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>().select("id").in("group_id", ids));
|
List<MdPbVehicleMater> vehicleMaterList = iMdPbVehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>().select("id").in("group_id", ids));
|
||||||
if (ObjectUtil.isNotEmpty(vehicleMaterList)) {
|
if (ObjectUtil.isNotEmpty(vehicleMaterList)) {
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public class GroupOrderController {
|
|||||||
|
|
||||||
@PostMapping("in")
|
@PostMapping("in")
|
||||||
@SaIgnore
|
@SaIgnore
|
||||||
@Log("手持组盘操作")
|
@Log("手持合格证组盘操作")
|
||||||
public ResponseEntity<Object> inStorage(@RequestBody MaterGroupDto form) {
|
public ResponseEntity<Object> inStorage(@RequestBody MaterGroupDto form) {
|
||||||
Assert.noNullElements(new Object[]{form,form.getItem(),form.getStor_code()},"请求参数不能为空");
|
Assert.noNullElements(new Object[]{form,form.getItem(),form.getStor_code()},"请求参数不能为空");
|
||||||
for (MaterItem item : form.getItem()) {
|
for (MaterItem item : form.getItem()) {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.nl.common.TableDataInfo;
|
import org.nl.common.TableDataInfo;
|
||||||
import org.nl.common.anno.Log;
|
import org.nl.common.anno.Log;
|
||||||
@@ -24,6 +25,7 @@ import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
@@ -32,6 +34,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -58,6 +61,7 @@ public class IOStorageController {
|
|||||||
@PostMapping("out")
|
@PostMapping("out")
|
||||||
@SaIgnore
|
@SaIgnore
|
||||||
@Log("手持出库出库确认")
|
@Log("手持出库出库确认")
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseEntity<Object> outStorage(@RequestBody JSONObject form) {
|
public ResponseEntity<Object> outStorage(@RequestBody JSONObject form) {
|
||||||
String vehicle_code = form.getString("vehicle_code");
|
String vehicle_code = form.getString("vehicle_code");
|
||||||
List<MdPbVehicleMater> ones = iMdPbVehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>()
|
List<MdPbVehicleMater> ones = iMdPbVehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>()
|
||||||
@@ -68,16 +72,31 @@ public class IOStorageController {
|
|||||||
RedissonUtils.lock(() -> {
|
RedissonUtils.lock(() -> {
|
||||||
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()
|
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()
|
||||||
.eq("is_used", true)
|
.eq("is_used", true)
|
||||||
.eq("lock_type", StatusEnum.LOCK.code("无锁"))
|
|
||||||
.eq("vehicle_code", vehicle_code);
|
.eq("vehicle_code", vehicle_code);
|
||||||
List<StIvtStructattr> list = iStIvtStructattrService.list(query);
|
List<StIvtStructattr> list = iStIvtStructattrService.list(query);
|
||||||
//todo 二楼出库调通后注释
|
if (ObjectUtils.isNotEmpty(list)) {
|
||||||
long storageCount = list.stream().filter(r -> r.getStor_code().equals(StatusEnum.STOCK_INFO.code("FStockPallet")) ||
|
List<StIvtStructattr> ivtList = list.stream().filter(r -> r.getStor_code().equals(StatusEnum.STOCK_INFO.code("二楼ctu缓存库")) ||
|
||||||
r.getStor_code().equals(StatusEnum.STOCK_INFO.code("料箱库")) ||
|
r.getStor_code().equals(StatusEnum.STOCK_INFO.code("二楼货架缓存库"))).collect(Collectors.toList());
|
||||||
r.getStor_code().equals(StatusEnum.STOCK_INFO.code("虚拟库"))).count();
|
if (ObjectUtils.isNotEmpty(ivtList)) {
|
||||||
if (storageCount > 0) {
|
//CTU线边库已出库,未确认,清除CTU库库存与组盘记录
|
||||||
throw new BadRequestException(String.format("出库确认失败:当前载具号在立库的库位中未出库:%s中,请核查库存记录!", list.get(0).getStruct_code()));
|
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
||||||
|
.set("is_delete", true)
|
||||||
|
.set("qty", "0")
|
||||||
|
.set("update_time", DateUtil.now())
|
||||||
|
.set("update_name", SecurityUtils.getCurrentNickName())
|
||||||
|
.eq("vehicle_code", vehicle_code)
|
||||||
|
.eq("is_delete", false));
|
||||||
|
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
|
||||||
|
.set("lock_type", StatusEnum.LOCK.code("无锁"))
|
||||||
|
.set("vehicle_code",null)
|
||||||
|
.set("update_time", DateUtil.now())
|
||||||
|
.set("update_name", SecurityUtils.getCurrentNickName())
|
||||||
|
.eq("struct_code", ivtList.get(0).getStruct_code()));
|
||||||
|
} else {
|
||||||
|
throw new BadRequestException(String.format("出库确认失败:当前载具号在立库的库位中未出库:%s中,请核查库存记录!", list.get(0).getStruct_code()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}, StatusEnum.STRATEGY_TYPE.code("出库") + vehicle_code, 5);
|
}, StatusEnum.STRATEGY_TYPE.code("出库") + vehicle_code, 5);
|
||||||
//流程校验
|
//流程校验
|
||||||
for (MdPbVehicleMater one : ones) {
|
for (MdPbVehicleMater one : ones) {
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.checkerframework.checker.units.qual.A;
|
|
||||||
import org.nl.common.domain.exception.BadRequestException;
|
import org.nl.common.domain.exception.BadRequestException;
|
||||||
import org.nl.common.enums.StatusEnum;
|
import org.nl.common.enums.StatusEnum;
|
||||||
import org.nl.common.utils.*;
|
import org.nl.common.utils.*;
|
||||||
@@ -22,8 +21,6 @@ import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
|
|||||||
import org.nl.wms.base_manage.material.service.impl.MdMeMaterialbaseServiceImpl;
|
import org.nl.wms.base_manage.material.service.impl.MdMeMaterialbaseServiceImpl;
|
||||||
import org.nl.wms.base_manage.measure.service.dao.BmMeasureUnit;
|
import org.nl.wms.base_manage.measure.service.dao.BmMeasureUnit;
|
||||||
import org.nl.wms.base_manage.measure.service.impl.BmMeasureUnitServiceImpl;
|
import org.nl.wms.base_manage.measure.service.impl.BmMeasureUnitServiceImpl;
|
||||||
import org.nl.wms.base_manage.sect.service.IStIvtSectattrService;
|
|
||||||
import org.nl.wms.base_manage.sect.service.dao.StIvtSectattr;
|
|
||||||
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
|
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
|
||||||
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
|
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
|
||||||
import org.nl.wms.dispatch_manage.point.service.ISchBasePointService;
|
import org.nl.wms.dispatch_manage.point.service.ISchBasePointService;
|
||||||
@@ -61,7 +58,10 @@ import org.springframework.util.Assert;
|
|||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -250,6 +250,9 @@ public class PdaIOService {
|
|||||||
if (ObjectUtils.isEmpty(pointList)) {
|
if (ObjectUtils.isEmpty(pointList)) {
|
||||||
throw new BadRequestException("输入的站点编号有误或被禁用,请检查!");
|
throw new BadRequestException("输入的站点编号有误或被禁用,请检查!");
|
||||||
}
|
}
|
||||||
|
if (pointList.get(0).getLock_type().equals(StatusEnum.LOCK.code("无锁")) && "0".equals(pointList.get(0).getPoint_type())) {
|
||||||
|
throw new BadRequestException("小车搬运任务未完成,请稍后再扫码确认!");
|
||||||
|
}
|
||||||
if (StringUtils.isNotBlank(pointList.get(0).getVehicle_code())) {
|
if (StringUtils.isNotBlank(pointList.get(0).getVehicle_code())) {
|
||||||
List<StIvtStructattr> stIvtStructattrList = iStIvtStructattrService.list(new LambdaQueryWrapper<StIvtStructattr>()
|
List<StIvtStructattr> stIvtStructattrList = iStIvtStructattrService.list(new LambdaQueryWrapper<StIvtStructattr>()
|
||||||
.eq(StIvtStructattr::getSect_code, pointList.get(0).getVehicle_code())
|
.eq(StIvtStructattr::getSect_code, pointList.get(0).getVehicle_code())
|
||||||
@@ -259,7 +262,7 @@ public class PdaIOService {
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
//清除载具物料组盘信息
|
//清除载具物料组盘信息
|
||||||
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
||||||
.set("frozen_qty",0)
|
.set("frozen_qty", 0)
|
||||||
.set("qty",0)
|
.set("qty",0)
|
||||||
.set("is_delete",true)
|
.set("is_delete",true)
|
||||||
.set("remark","该料箱的物料已从产线取走")
|
.set("remark","该料箱的物料已从产线取走")
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ public class PmFormDataController {
|
|||||||
|
|
||||||
|
|
||||||
@PostMapping ("/syncFeedBack")
|
@PostMapping ("/syncFeedBack")
|
||||||
@Log("手动同步单据")
|
@Log("手动回执单同步")
|
||||||
public ResponseEntity<Object> syncFeedBack(@RequestBody JSONObject fromData) {
|
public ResponseEntity<Object> syncFeedBack(@RequestBody JSONObject fromData) {
|
||||||
return new ResponseEntity<>(iPmFormDataService.syncFeedBack(fromData),HttpStatus.OK);
|
return new ResponseEntity<>(iPmFormDataService.syncFeedBack(fromData),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 手动同步单据
|
* 手动推送回执单据
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String syncFeedBack(JSONObject jsonData) {
|
public String syncFeedBack(JSONObject jsonData) {
|
||||||
|
|||||||
@@ -6,16 +6,14 @@ import com.alibaba.fastjson.JSONArray;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.kingdee.bos.webapi.entity.*;
|
import com.kingdee.bos.webapi.entity.*;
|
||||||
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.nl.common.domain.exception.BadRequestException;
|
import org.nl.common.domain.exception.BadRequestException;
|
||||||
import org.nl.common.utils.BaseCode;
|
import org.nl.common.utils.*;
|
||||||
import org.nl.common.utils.ErpServiceUtils;
|
|
||||||
import org.nl.common.utils.IdUtil;
|
|
||||||
import org.nl.common.utils.MapOf;
|
|
||||||
import org.nl.config.lucene.LuceneAppender;
|
import org.nl.config.lucene.LuceneAppender;
|
||||||
import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService;
|
import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService;
|
||||||
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
|
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
|
||||||
@@ -26,6 +24,7 @@ import org.nl.wms.external_system.erp.dto.ErpSec;
|
|||||||
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
||||||
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
|
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
|
||||||
import org.nl.wms.pm_manage.form_data.service.dao.mapper.PmFormDataMapper;
|
import org.nl.wms.pm_manage.form_data.service.dao.mapper.PmFormDataMapper;
|
||||||
|
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||||
import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
|
import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
|
||||||
import org.nl.wms.sync_manage.service.form_mapping.impl.SyncFormMappingServiceImpl;
|
import org.nl.wms.sync_manage.service.form_mapping.impl.SyncFormMappingServiceImpl;
|
||||||
import org.slf4j.MDC;
|
import org.slf4j.MDC;
|
||||||
@@ -35,6 +34,7 @@ import org.springframework.context.annotation.Lazy;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
@@ -275,7 +275,7 @@ public class SyncErpBillsScheduleService {
|
|||||||
.filter(rt -> new HashSet<>(Arrays.asList("1233925", "1233926")).contains(rt.getForm_data().getString(stockId)))
|
.filter(rt -> new HashSet<>(Arrays.asList("1233925", "1233926")).contains(rt.getForm_data().getString(stockId)))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
if (ObjectUtils.isNotEmpty(filteredDetails)) {
|
if (ObjectUtils.isNotEmpty(filteredDetails)) {
|
||||||
mainBill.addAll(filteredDetails);
|
mainBill.addAll(detailWithStock);
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -295,15 +295,35 @@ public class SyncErpBillsScheduleService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (PmFormData f : mainBill) {
|
for (PmFormData f : mainBill) {
|
||||||
if (exitFormDataList.contains(f.getId() + "$" + f.getForm_type())) {
|
//存在ID,主单据不新增不修改,修改未出库单据的明细
|
||||||
continue 外部;
|
String id = f.getId() + "$" + f.getForm_type();
|
||||||
|
if (exitFormDataList.contains(id)) {
|
||||||
|
//单据明细
|
||||||
|
if (StringUtils.isBlank(f.getCode())) {
|
||||||
|
PmFormData existDtlData = formDataService.getOne(new QueryWrapper<PmFormData>().eq("id",id).select("qty"));
|
||||||
|
//同步修改未出库单据
|
||||||
|
if (existDtlData.getQty().compareTo(BigDecimal.ZERO) > 0||f.getPlan_qty().compareTo(f.getAssign_qty()) > 0) {
|
||||||
|
formDataService.update(new LambdaUpdateWrapper<PmFormData>()
|
||||||
|
.set(PmFormData::getMaterial_id, f.getMaterial_id())
|
||||||
|
.set(PmFormData::getQty, f.getQty())
|
||||||
|
.set(PmFormData::getAssign_qty, f.getAssign_qty())
|
||||||
|
.set(PmFormData::getUnit_id, f.getUnit_id())
|
||||||
|
.set(PmFormData::getForm_data, JSON.toJSONString(f.getForm_data()))
|
||||||
|
.set(PmFormData::getPlan_qty, f.getPlan_qty())
|
||||||
|
.set(PmFormData::getBar_code, f.getBar_code())
|
||||||
|
.set(PmFormData::getUpdate_name, DateUtil.now())
|
||||||
|
.set(PmFormData::getUpdate_name, SecurityUtils.getCurrentNickName())
|
||||||
|
.eq(PmFormData::getId, id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//单据明细
|
||||||
|
if (StringUtils.isBlank(f.getCode())) {
|
||||||
|
f.setParent_id(mainId + "$" + formType);
|
||||||
|
}
|
||||||
|
f.setId(id);
|
||||||
|
formDataService.save(f);
|
||||||
}
|
}
|
||||||
//单据明细
|
|
||||||
if (StringUtils.isBlank(f.getCode())) {
|
|
||||||
f.setParent_id(mainId + "$" + formType);
|
|
||||||
}
|
|
||||||
f.setId(f.getId() + "$" + f.getForm_type());
|
|
||||||
formDataService.save(f);
|
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
errorMsg.put("result第"+i+1+"条解析异常:",e.getMessage());
|
errorMsg.put("result第"+i+1+"条解析异常:",e.getMessage());
|
||||||
|
|||||||
@@ -11,6 +11,16 @@
|
|||||||
label-width="100px"
|
label-width="100px"
|
||||||
label-suffix=":"
|
label-suffix=":"
|
||||||
>
|
>
|
||||||
|
<el-form-item label="物料编码">
|
||||||
|
<el-input
|
||||||
|
v-model="
|
||||||
|
query.material_code"
|
||||||
|
clearable
|
||||||
|
placeholder="物料编码"
|
||||||
|
style="width: 200px;"
|
||||||
|
class="filter-item"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="载具号">
|
<el-form-item label="载具号">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="
|
v-model="
|
||||||
|
|||||||
Reference in New Issue
Block a user