add:领料出库回传、点对点库存调拨回传、采购单打印
This commit is contained in:
@@ -12,7 +12,7 @@ import java.nio.charset.StandardCharsets;
|
||||
|
||||
public class ZplUtil {
|
||||
|
||||
public static void print(String zpl){
|
||||
public static void print(String zpl) {
|
||||
String ip = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.PRINTER_IP).getValue();
|
||||
String port = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.PRINTER_PORT).getValue();
|
||||
|
||||
@@ -25,20 +25,108 @@ public class ZplUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static String generatePurchaseLabel(String orderNo,String skuName, String skuCode, String qty, String batchNo, String itemNo) {
|
||||
public static String generatePurchaseLabel(String orderNo, String skuName, String skuCode, String qty, String itemNo) {
|
||||
|
||||
|
||||
// QRCode内容
|
||||
String qrCode = "LA," + orderNo + "#"+itemNo+"#" + skuCode + "#"+skuName+"##" + qty + "#";
|
||||
|
||||
// ======================
|
||||
// 拼接ZPL
|
||||
// ======================
|
||||
StringBuilder zpl = new StringBuilder();
|
||||
zpl.append("^XA\n");
|
||||
zpl.append("^CI28\n");
|
||||
zpl.append("^PW609\n");
|
||||
zpl.append("^LL406\n");
|
||||
zpl.append("^FO30,30^A0N,28,28^FD").append(escape(skuName)).append("^FS\n");
|
||||
zpl.append("^FO30,70^A0N,24,24^FD").append(escape(skuCode)).append("^FS\n");
|
||||
zpl.append("^FO30,115^A0N,32,32^FD").append(escape(qty)).append(escape(batchNo)).append("^FS\n");
|
||||
zpl.append("^FO350,20^BQN,2,5^FDQA,").append("#").append(escape(itemNo)).append("^FS\n");
|
||||
zpl.append("^XZ");
|
||||
|
||||
zpl.append("^XA\n")
|
||||
.append("~TA000\n")
|
||||
.append("~JSN\n")
|
||||
.append("^LT0\n")
|
||||
.append("^MNW\n")
|
||||
.append("^MTT\n")
|
||||
.append("^PON\n")
|
||||
.append("^PMN\n")
|
||||
.append("^LH0,0\n")
|
||||
.append("^JMA\n")
|
||||
.append("^PR6,6\n")
|
||||
.append("~SD10\n")
|
||||
.append("^JUS\n")
|
||||
.append("^LRN\n")
|
||||
.append("^CI27\n")
|
||||
.append("^PA0,1,1,0\n")
|
||||
.append("^XZ\n")
|
||||
|
||||
.append("^XA\n")
|
||||
.append("^MMT\n")
|
||||
.append("^PW609\n")
|
||||
.append("^LL406\n")
|
||||
.append("^LS0\n")
|
||||
|
||||
// ======================
|
||||
// 以下图片(GFA)保持不变
|
||||
// ======================
|
||||
.append("^FO24,363^GB562,0,4^FS\n")
|
||||
.append("^FO21,54^GB562,0,4^FS\n")
|
||||
.append("^FO230,14^GFA,329,544,16,:Z64:eJyd0TuOwyAQBuBBI8VVdi+wCtdIGvtKKVMgJ5KLvZalFLkGiMLlIq20YBl5MhiEUm0RaPgE/MMD4I12AcBpzGMJcFbQDOy2uA+Hxk6huiVColgticSr9xrApv1f2SJcUj4vS96JO0UxbL6lzcJTlLqHMk/jsiqp1RFaufnmvJJbvizn8ZHrB+i77A+v0DioPvxd0bJVV883WKOrO/ZEDmLxaVX4ww7ZOHMemVfHZOHavH72PS7GYTaOC+fxPGr2lUgnL+Sax7rVcrNWzS+5z+9sHTCiJSfFmp88YBCD4bRYzJ0vdITzO5/5f3sCiQWikw==:C454\n")
|
||||
.append("^FO24,68^GFA,169,200,8,:Z64:eJxdzrENwkAQBMA9nYQTS6SO7FJohTIsmcCuwC09ooAvAZcA0TsALftvor9kdHsbHFBNe9CseJ2kRyQ6N3vOxYGBq9/lg3nvp0PlaVf/b9dPgRz4KXepfrrZFrK5j/FavHBP0ZYsI0w5SJylf4lG2jvCQ/1mPT91eVF/:2FFA\n")
|
||||
|
||||
// 运单号
|
||||
.append("^FT132,88^A0N,20,25^FH\\^CI28^FD")
|
||||
.append(orderNo)
|
||||
.append("^FS^CI27\n")
|
||||
|
||||
.append("^FO40,111^GFA,133,200,8,:Z64:eJxjYMAO2BkOgGn+/w/q/wBpeXsIbcPAUAHEDNUMDGC+8YEEMM3+/wNU/QcGZpB69ub//xsQtD17g40EA5gGq+dH0AY2EJoBTNs3MP6B0Axgmh9oIQ43IgMA/2EiTg==:5269\n")
|
||||
|
||||
// 行号
|
||||
.append("^FT245,129^A0N,20,25^FH\\^CI28^FD")
|
||||
.append(itemNo)
|
||||
.append("^FS^CI27\n")
|
||||
|
||||
.append("^FO31,201^GFA,177,200,8,:Z64:eJx1zjEKwlAMBuCUDo5ZnV6v4VDoWTyBqyD0UbzY6z0EcwLxkcEOkt/EipP+y0fgJwnR73BPx7Q6phaSd3tYiOrOoY3r/FER/cNVYURbxn2xDk/XwuFR0U1Scq7AGTLc9L2PL7qkZhLu1e81widxWbiGG+G5uG358+Y3LwGvUEY=:FEB3\n")
|
||||
|
||||
// 物料编码
|
||||
.append("^FT167,217^A0N,20,25^FH\\^CI28^FD")
|
||||
.append(skuCode)
|
||||
.append("^FS^CI27\n")
|
||||
|
||||
.append("^FO24,245^GFA,241,300,12,:Z64:eJyNz7ENwjAQBdCPKNKRBdBljRSRMgsT0EYC+aBiCyahMGINFDwBsuWCVP7YERUNXPWKf193wO+pOwyCAVU72wgmqxdA2w0T6ExroQxMC3pRV5zM8upE/cc3y1AykVK9DkqL7SMyrRQy5k76KcGgl9kpYY+eB/SvwOZIX/KqgTzRm+z+mXcbl+1Q3+MkC+c5ZndxKG7OFvXOZed7Smf42GRf7ZyR9R+Pf80bAEhuBg==:1147\n")
|
||||
.append("^FO213,245^GFA,177,200,8,:Z64:eJxljrEJw0AMRQUq3BiygbVJZskmDlyRMiNkEEOi4CUCaTLBcXDtoR+dlVT+hR7/S3xEtNM49lkI4KROM34r1XPODBWo2fAoP7apKlGQ74fF90/gWoOS1HMpkl5+f5xvaIK1yQU21RUYev/Jezbm3IkS/s/5E/km1v27oS/nQ1kK:C268\n")
|
||||
.append("^FO42,287^GFA,153,200,8,:Z64:eJxjYMAO5L43MB8A043NUPpxG5CW/97w/X8DA0P99wcQ+v+HdH6Q/P8P/O/A9APbNxB1tQ8YQOoaCkF03feGhxC6+fEHsHnNh3+A1T88/gdK7wPp+//xvXwDSN0HG5C5NocfVLDhcCMyAABuhDsZ:8118\n")
|
||||
|
||||
// 物料名称
|
||||
.append("^FT167,307^A0N,20,25^FH\\^CI28^FD")
|
||||
.append(skuName)
|
||||
.append("^FS^CI27\n")
|
||||
|
||||
.append("^FO42,334^GFA,157,200,8,:Z64:eJxjYMAAH2SAhPFzhv//gLT1f4YPckBa/j2EL92fAObb//8A5gNpBmYgzf/v8f//DUB1fx6A9Vv/fwCVf/D5HpCuf38Awn9+AMyXfQ7hyx9vAPP5vz9gPgOk2aHmyv/7wHwYaF6NRSLYXEIAAB6jPc4=:5C5A\n")
|
||||
|
||||
// 箱数
|
||||
.append("^FT249,354^A0N,20,25^FH\\^CI28^FD")
|
||||
.append(qty)
|
||||
.append("^FS^CI27\n")
|
||||
|
||||
.append("^FO23,319^GB352,0,4^FS\n")
|
||||
.append("^FO21,277^GB352,0,4^FS\n")
|
||||
.append("^FO21,233^GB352,0,4^FS\n")
|
||||
.append("^FO21,188^GB352,0,4^FS\n")
|
||||
.append("^FO21,100^GB352,0,4^FS\n")
|
||||
.append("^FO372,58^GB0,308,4^FS\n")
|
||||
|
||||
// 二维码
|
||||
.append("^FT380,333^BQN,2,7\n")
|
||||
.append("^FH\\^FD")
|
||||
.append(qrCode)
|
||||
.append("^FS\n")
|
||||
|
||||
.append("^FO112,58^GB0,308,4^FS\n")
|
||||
.append("^FO21,145^GB352,0,4^FS\n")
|
||||
.append("^FO19,156^GFA,237,300,12,:Z64:eJyFz0EKwjAQBdAJgXYjdOuqPYhgr+IRBDdCheYGvYFnGejCZY6QQi8QcZGA1e+0VbpRHLJ4hM9nhujHrBamDfmEciYtz1KAdh3ApJwJUOBaXIDRkDOlG90CGYZS/vNKnCJizoRItVkMv3FjhgH99JX75M/7w2XqCackX/ft7LGTb7LQcTe5gKESMVja0tuw0k+eJUMA3X2NTqwf0P0wW11txvHbnf/mBf1cd3Q=:6688\n")
|
||||
.append("^FO228,158^GFA,101,200,8,:Z64:eJxjYCAOMDP8kG8A0vbMd4wPAGl+5nmVD0A0O4zug9L9zAcgNFg9Ep8RKl+Ioo95HoTPfCcZpM7+4Q/7BiLdhAwAiycaRQ==:67BF\n")
|
||||
.append("^PQ1,0,1,Y\n")
|
||||
.append("^XZ");
|
||||
|
||||
return zpl.toString();
|
||||
}
|
||||
public static String generateVehicleLabel(VehicleLabelDto dto){
|
||||
|
||||
public static String generateVehicleLabel(VehicleLabelDto dto) {
|
||||
StringBuilder zpl = new StringBuilder();
|
||||
zpl.append("^XA\n");
|
||||
zpl.append("^CI28\n");
|
||||
|
||||
@@ -43,4 +43,6 @@ public interface WmsToErpService {
|
||||
* }
|
||||
*/
|
||||
JSONObject materialSync(JSONObject whereJson);
|
||||
|
||||
void dealBus(JSONObject requestData);
|
||||
}
|
||||
|
||||
@@ -11,11 +11,7 @@ import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.core.tasks.LineCallFullTask;
|
||||
import org.nl.wms.sch_manage.service.core.tasks.LineReturnEmptyTask;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService;
|
||||
import org.nl.wms.welding_manage.service.work_order.IWorkOrderService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -31,10 +27,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
private IMdPbGroupplateService iMdPbGroupplateService;
|
||||
@Autowired
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
@Autowired
|
||||
private IWorkOrderService iWorkOrderService;
|
||||
@Autowired
|
||||
private IPmStockReturnService iPmStockReturnService;
|
||||
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
@@ -51,7 +44,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
case "3"://返空
|
||||
case "4"://托盘余料退回
|
||||
//TODO
|
||||
String[] empVehLocation = {"EB101101","EB101102"};//暂定空托对接位
|
||||
String[] empVehLocation = {"EB101101", "EB101102"};//暂定空托对接位
|
||||
if (StrUtil.isEmptyIfStr(vehicleCode)) {
|
||||
throw new BadRequestException("请求失败,上料口没有绑定托盘");
|
||||
}
|
||||
@@ -76,25 +69,23 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
if (!StrUtil.isEmptyIfStr(vehicleCode) && Objects.equals(mesTaskParams.getRequestedCode(), "2")) {
|
||||
throw new BadRequestException("请求失败,上料口存在托盘占用");
|
||||
}
|
||||
//获取组盘信息
|
||||
List<GroupPlate> groupList = iMdPbGroupplateService.list(new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getLoad_port, portPoint.getPoint_code())
|
||||
.eq(GroupPlate::getExt_code, mesTaskParams.getOrderCode())
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库")));
|
||||
if (groupList.isEmpty()) {
|
||||
List<SchBasePoint> matPoints = iSchBasePointService.list(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.isNotNull(SchBasePoint::getVehicle_code)
|
||||
.eq(SchBasePoint::getRegion_code, portPoint.getRegion_code())
|
||||
.eq(SchBasePoint::getPoint_type, "1"));
|
||||
|
||||
if (matPoints.isEmpty()) {
|
||||
throw new BadRequestException("叫满任务失败,库存没有当前下料口的组盘物料");
|
||||
}
|
||||
GroupPlate groupPlate = groupList.get(0);
|
||||
String storagevehicleCode = groupPlate.getStoragevehicle_code();
|
||||
//根据托盘获取当前起点
|
||||
SchBasePoint start_point = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getVehicle_code, storagevehicleCode));
|
||||
SchBasePoint start_point = matPoints.get(0);
|
||||
String veh = start_point.getVehicle_code();
|
||||
JSONObject taskFormCall = new JSONObject();
|
||||
taskFormCall.put("config_code", "LineCallFullTask");
|
||||
taskFormCall.put("point_code1", start_point.getPoint_code());
|
||||
taskFormCall.put("point_code2", portPoint.getPoint_code());
|
||||
taskFormCall.put("vehicle_code", storagevehicleCode);
|
||||
taskFormCall.put("vehicle_code", veh);
|
||||
taskFormCall.put("create_name", "MES");
|
||||
taskFormCall.put("workOrderCode", mesTaskParams.getOrderCode());
|
||||
LineCallFullTask lineCallFullTask = SpringContextHolder.getBean("LineCallFullTask");
|
||||
lineCallFullTask.create(taskFormCall);
|
||||
|
||||
|
||||
@@ -5,12 +5,11 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.ext_manage.util.ErpUtil;
|
||||
import org.nl.wms.system_manage.enums.SysParamConstant;
|
||||
import org.nl.wms.system_manage.service.param.dao.Param;
|
||||
import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.ext_manage.enums.EXTConstant;
|
||||
import org.nl.wms.ext_manage.service.WmsToErpService;
|
||||
import org.nl.wms.ext_manage.util.ErpUtil;
|
||||
import org.nl.wms.system_manage.enums.SysParamConstant;
|
||||
import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -57,4 +56,9 @@ public class WmsToErpServiceImpl implements WmsToErpService {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dealBus(JSONObject requestData) {
|
||||
ErpUtil.create().login().reqBus(requestData.toJSONString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ public class ErpUtil {
|
||||
|
||||
private String loginUrl;
|
||||
private String busUrl;
|
||||
private String auditUrl;
|
||||
private String userName;
|
||||
private String password;
|
||||
private String slnName;
|
||||
@@ -33,6 +34,7 @@ public class ErpUtil {
|
||||
ErpUtil erpUtil = new ErpUtil();
|
||||
erpUtil.setLoginUrl(SpringContextHolder.getProperties("erp.loginUrl"));
|
||||
erpUtil.setBusUrl(SpringContextHolder.getProperties("erp.busUrl"));
|
||||
erpUtil.setAuditUrl(SpringContextHolder.getProperties("erp.auditUrl"));
|
||||
erpUtil.setUserName(SpringContextHolder.getProperties("erp.username"));
|
||||
erpUtil.setPassword(SpringContextHolder.getProperties("erp.password"));
|
||||
erpUtil.setSlnName(SpringContextHolder.getProperties("erp.slnName"));
|
||||
@@ -74,6 +76,29 @@ public class ErpUtil {
|
||||
* 审核接口请求
|
||||
*/
|
||||
public void audit(String json){
|
||||
try {
|
||||
call.clearOperation();
|
||||
call.setOperationName("dealTask");
|
||||
call.setTimeout(1000*60);
|
||||
call.setMaintainSession(true);
|
||||
call.setTargetEndpointAddress(auditUrl);
|
||||
call.setReturnQName(new QName("", "dealTaskReturn"));
|
||||
call.addHeader(new SOAPHeaderElement("http://login.webservice.bos.kingdee.com", "SessionId", sessionId));
|
||||
Object result = call.invoke(new Object[]{json});
|
||||
JSONObject resultJson = JSON.parseObject(result.toString());
|
||||
if (resultJson.getBoolean("status") == false){
|
||||
throw new BadRequestException("回传失败:" + resultJson.getString("message"));
|
||||
}
|
||||
log.error("Eas回传接口请求成功!");
|
||||
log.error("Eas回传接口invoke调用结果:" + result.toString());
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException("erp审核接口请求失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 请求业务接口
|
||||
*/
|
||||
public void reqBus(String json){
|
||||
try {
|
||||
call.clearOperation();
|
||||
call.setOperationName("dealTask");
|
||||
@@ -87,10 +112,10 @@ public class ErpUtil {
|
||||
if (resultJson.getInteger("result") == 0){
|
||||
throw new BadRequestException("回传失败:" + resultJson.getString("msg"));
|
||||
}
|
||||
log.error("Eas回传接口请求成功!");
|
||||
log.error("Eas回传接口invoke调用结果:" + result.toString());
|
||||
log.error("Eas业务接口请求成功!");
|
||||
log.error("Eas业务接口invoke调用结果:" + result.toString());
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException("erp审核接口请求失败:" + e.getMessage());
|
||||
throw new BadRequestException("erp业务接口请求失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -186,6 +186,7 @@ public class InboundPdaServiceImpl implements InboundPdaService {
|
||||
.status(GROUP_PLATE_STATUS.code("组盘"))
|
||||
.ext_code(dto.getBill_id())
|
||||
.ext_type(SourceBillTypeEnum.PM_PURCHASE.getBillType())
|
||||
.ext_dtl_code(item.getItem_no())
|
||||
.create_id(SecurityUtils.getCurrentUserId())
|
||||
.create_name(SecurityUtils.getCurrentNickName())
|
||||
.create_time(DateUtil.now())
|
||||
@@ -285,6 +286,7 @@ public class InboundPdaServiceImpl implements InboundPdaService {
|
||||
.status(GROUP_PLATE_STATUS.code("组盘"))
|
||||
.ext_code(usualInboundDto.getBill_id())
|
||||
.ext_type(SourceBillTypeEnum.PM_PURCHASE.getBillType())
|
||||
.ext_dtl_code(item.getItem_no())
|
||||
.create_id(SecurityUtils.getCurrentUserId())
|
||||
.create_name(SecurityUtils.getCurrentNickName())
|
||||
.create_time(DateUtil.now())
|
||||
@@ -342,6 +344,7 @@ public class InboundPdaServiceImpl implements InboundPdaService {
|
||||
dtl.put("plan_qty", plateDao.getQty());
|
||||
dtl.put("ext_code", plateDao.getExt_code());
|
||||
dtl.put("ext_type", plateDao.getExt_type());
|
||||
dtl.put("source_billdtl_id", plateDao.getExt_dtl_code());
|
||||
dtl.put("callback_strategy", "dealPurchaseRecBillCallback");
|
||||
// 调用新增
|
||||
tableData.add(dtl);
|
||||
@@ -450,6 +453,7 @@ public class InboundPdaServiceImpl implements InboundPdaService {
|
||||
dtl.put("plan_qty", plateDao.getQty());
|
||||
dtl.put("ext_code", plateDao.getExt_code());
|
||||
dtl.put("ext_type", plateDao.getExt_type());
|
||||
dtl.put("source_billdtl_id", plateDao.getExt_dtl_code());
|
||||
dtl.put("callback_strategy", "dealPurchaseRecBillCallback");
|
||||
// 调用新增入库单
|
||||
tableData.add(dtl);
|
||||
|
||||
@@ -204,7 +204,7 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchasemstMapper, Purchase
|
||||
String zpl = ZplUtil.generatePurchaseLabel(mst.getOrder_no(),
|
||||
dtl.getSku_name(), dtl.getSku_code(),
|
||||
dtl.getQty() != null ? dtl.getQty().stripTrailingZeros().toPlainString() : "0",
|
||||
dtl.getBatch_no(), dtl.getItem_no());
|
||||
dtl.getItem_no());
|
||||
allZpl.append(zpl);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,19 +60,18 @@ public class StructAreaDeliveryAutoTask {
|
||||
return;
|
||||
}
|
||||
//点位映射
|
||||
Map<String, String> vehicleLoadPortMap = iMdPbGroupplateService.list(
|
||||
Map<String, GroupPlate> vehicleLoadPortMap = iMdPbGroupplateService.list(
|
||||
new LambdaQueryWrapper<GroupPlate>()
|
||||
.in(GroupPlate::getStoragevehicle_code, validPoints.stream()
|
||||
.map(SchBasePoint::getVehicle_code)
|
||||
.collect(Collectors.toSet()))
|
||||
.select(GroupPlate::getStoragevehicle_code, GroupPlate::getLoad_port)).stream()
|
||||
.collect(Collectors.toSet()))).stream()
|
||||
.collect(Collectors.toMap(
|
||||
GroupPlate::getStoragevehicle_code,
|
||||
GroupPlate::getLoad_port
|
||||
t -> t
|
||||
));
|
||||
for (SchBasePoint validPoint : validPoints) {
|
||||
final String loadPoint = vehicleLoadPortMap.get(validPoint.getVehicle_code());
|
||||
final SchBasePoint loadInfo = iSchBasePointService.selectByCode(loadPoint);
|
||||
GroupPlate groupPlate = vehicleLoadPortMap.get(validPoint.getVehicle_code());
|
||||
final SchBasePoint loadInfo = iSchBasePointService.selectByCode(groupPlate.getLoad_port());
|
||||
final List<String> empPointCodes = empRegionPointMap.get(loadInfo.getRegion_code());
|
||||
if (CollectionUtil.isNotEmpty(empPointCodes)){
|
||||
//创建搬运任务
|
||||
@@ -82,6 +81,7 @@ public class StructAreaDeliveryAutoTask {
|
||||
param.put("vehicle_code",validPoint.getVehicle_code());
|
||||
param.put("config_code","Point2PointTask");
|
||||
param.put("Priority","1");
|
||||
param.put("workOrderCode",groupPlate.getExt_code());
|
||||
point2PointTask.create(param);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.sch_manage.service.core.tasks;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
@@ -10,6 +11,7 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.ext_manage.util.ErpUtil;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
@@ -19,11 +21,19 @@ import org.nl.wms.sch_manage.service.core.TaskType;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.enums.StockReturnStatusEnum;
|
||||
import org.nl.wms.welding_manage.service.work_order.IWorkOrderService;
|
||||
import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderBomDao;
|
||||
import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderDao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
;
|
||||
;import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: Liuxy
|
||||
@@ -45,6 +55,12 @@ public class LineCallFullTask extends AbstractTask {
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
@Autowired
|
||||
private IWorkOrderService iWorkOrderService;
|
||||
@Autowired
|
||||
private IPmStockReturnService iPmStockReturnService;
|
||||
@Autowired
|
||||
private IMdPbGroupplateService iMdPbGroupplateService;
|
||||
|
||||
|
||||
@Override
|
||||
@@ -57,6 +73,7 @@ public class LineCallFullTask extends AbstractTask {
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setExt_group_data(json.getString("workOrderCode"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
@@ -122,6 +139,7 @@ public class LineCallFullTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
@@ -166,6 +184,64 @@ public class LineCallFullTask extends AbstractTask {
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
//调用eas领料出库单
|
||||
//获取组盘信息
|
||||
String workOrderCode = taskObj.getExt_group_data();
|
||||
String vehicleCode = taskObj.getVehicle_code();
|
||||
List<GroupPlate> groupList = iMdPbGroupplateService.list(new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getStoragevehicle_code, vehicleCode)
|
||||
.eq(GroupPlate::getExt_code, workOrderCode)
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")));
|
||||
//获取工单信息
|
||||
WorkOrderDao workOrder = iWorkOrderService.getWorkOrder(workOrderCode);
|
||||
List<WorkOrderBomDao> orderBomItems = iWorkOrderService.getOrderBomItem(workOrderCode);
|
||||
|
||||
// 创建最外层的JSONObject
|
||||
JSONObject root = new JSONObject();
|
||||
root.put("method", "DealMaterailReqBill");
|
||||
root.put("type", "MES");
|
||||
// 创建data对象
|
||||
JSONObject data = new JSONObject();
|
||||
data.put("bizStatus", "02");
|
||||
data.put("mesNo", workOrder.getId());
|
||||
// 创建entrys数组
|
||||
JSONArray entrys = new JSONArray();
|
||||
for (GroupPlate plate : groupList) {
|
||||
for (WorkOrderBomDao orderBomItem : orderBomItems) {
|
||||
if (plate.getMaterial_code().equals(orderBomItem.getMaterial_code())){
|
||||
JSONObject entry = new JSONObject();
|
||||
entry.put("qty", plate.getQty());
|
||||
entry.put("sourceBillId", workOrder.getOrder_id());
|
||||
entry.put("sourceBillEntryId", orderBomItem.getItem_id());
|
||||
entry.put("sourceBillNo", workOrder.getOrder_code());
|
||||
// 将entry添加到数组中
|
||||
entrys.add(entry);
|
||||
}
|
||||
}
|
||||
iMdPbGroupplateService.removeById(plate.getGroup_id());
|
||||
}
|
||||
// 将entrys数组设置到data中
|
||||
data.put("entrys", entrys);
|
||||
// 将data设置到根对象中
|
||||
root.put("data", data);
|
||||
// ErpUtil.create().login().audit(root.toJSONString());
|
||||
//保存回传单
|
||||
PmStockReturn stockReturn = new PmStockReturn();
|
||||
stockReturn.setRequest_Id(workOrder.getOrder_id());
|
||||
stockReturn.setRequest_type(IOSEnum.BILL_TYPE.code("生产领料"));
|
||||
stockReturn.setStatus(StockReturnStatusEnum.TODO.getCode()); // 0-处理中
|
||||
stockReturn.setCreate_time(DateUtil.now());
|
||||
stockReturn.setRequest_data(root.toJSONString());
|
||||
//调erp业务接口
|
||||
try {
|
||||
ErpUtil.create().login().reqBus(root.toJSONString());
|
||||
stockReturn.setStatus(StockReturnStatusEnum.SUCESS.getCode());
|
||||
} catch (Exception e) {
|
||||
stockReturn.setError_msg(e.getMessage());
|
||||
stockReturn.setStatus(StockReturnStatusEnum.FAIL.getCode());
|
||||
}
|
||||
iPmStockReturnService.save(stockReturn);
|
||||
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
||||
@@ -2,14 +2,16 @@ package org.nl.wms.sch_manage.service.core.tasks;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.ext_manage.util.ErpUtil;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
@@ -19,10 +21,20 @@ import org.nl.wms.sch_manage.service.core.TaskType;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.enums.StockReturnStatusEnum;
|
||||
import org.nl.wms.welding_manage.service.work_order.IWorkOrderService;
|
||||
import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderBomDao;
|
||||
import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderDao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 点对点搬运任务
|
||||
*/
|
||||
@@ -47,6 +59,12 @@ public class Point2PointTask extends AbstractTask {
|
||||
*/
|
||||
@Autowired
|
||||
private IStructattrService iStructattrService;
|
||||
@Autowired
|
||||
private IWorkOrderService iWorkOrderService;
|
||||
@Autowired
|
||||
private IPmStockReturnService iPmStockReturnService;
|
||||
@Autowired
|
||||
private IMdPbGroupplateService iMdPbGroupplateService;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
@@ -60,6 +78,7 @@ public class Point2PointTask extends AbstractTask {
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setExt_group_data(json.getString("workOrderCode"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
@@ -108,6 +127,7 @@ public class Point2PointTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
@@ -152,6 +172,65 @@ public class Point2PointTask extends AbstractTask {
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
//获取组盘信息
|
||||
String workOrderCode = taskObj.getExt_group_data();
|
||||
String vehicleCode = taskObj.getVehicle_code();
|
||||
List<GroupPlate> groupList = iMdPbGroupplateService.list(new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getStoragevehicle_code, vehicleCode)
|
||||
.eq(GroupPlate::getExt_code, workOrderCode)
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")));
|
||||
//获取工单信息
|
||||
WorkOrderDao workOrder = iWorkOrderService.getWorkOrder(workOrderCode);
|
||||
List<WorkOrderBomDao> orderBomItems = iWorkOrderService.getOrderBomItem(workOrderCode);
|
||||
|
||||
// 创建最外层的JSONObject
|
||||
JSONObject root = new JSONObject();
|
||||
root.put("method", "DealLLDBBill");
|
||||
root.put("type", "MES");
|
||||
// 创建data对象
|
||||
JSONObject data = new JSONObject();
|
||||
data.put("billNo", taskObj.getTask_id());
|
||||
data.put("bizTypeNo", "331");
|
||||
data.put("issueStorageOrgUnitNo", workOrder.getOrg_code());
|
||||
data.put("receiptStorageOrgUnitNo", workOrder.getOrg_code());
|
||||
// 创建entrys数组
|
||||
JSONArray entrys = new JSONArray();
|
||||
for (GroupPlate plate : groupList) {
|
||||
for (WorkOrderBomDao orderBomItem : orderBomItems) {
|
||||
if (plate.getMaterial_code().equals(orderBomItem.getMaterial_code())){
|
||||
JSONObject entry = new JSONObject();
|
||||
entry.put("qty", plate.getQty());
|
||||
entry.put("materialNo", orderBomItem.getMaterial_code());
|
||||
entry.put("unitNo", "PCS");
|
||||
entry.put("receiptWarehouseNo", workOrder.getDefault_warehouse_code());
|
||||
entry.put("issueWarehouseNo", orderBomItem.getWarehouse_code());
|
||||
// 将entry添加到数组中
|
||||
entrys.add(entry);
|
||||
}
|
||||
}
|
||||
iMdPbGroupplateService.removeById(plate.getGroup_id());
|
||||
}
|
||||
// 将entrys数组设置到data中
|
||||
data.put("entrys", entrys);
|
||||
// 将data设置到根对象中
|
||||
root.put("data", data);
|
||||
// ErpUtil.create().login().audit(root.toJSONString());
|
||||
//保存回传单
|
||||
PmStockReturn stockReturn = new PmStockReturn();
|
||||
stockReturn.setRequest_Id(workOrder.getOrder_id());
|
||||
stockReturn.setRequest_type(IOSEnum.BILL_TYPE.code("库存调拨"));
|
||||
stockReturn.setStatus(StockReturnStatusEnum.TODO.getCode()); // 0-处理中
|
||||
stockReturn.setCreate_time(DateUtil.now());
|
||||
stockReturn.setRequest_data(root.toJSONString());
|
||||
//调erp业务接口
|
||||
try {
|
||||
ErpUtil.create().login().audit(root.toJSONString());
|
||||
stockReturn.setStatus(StockReturnStatusEnum.SUCESS.getCode());
|
||||
} catch (Exception e) {
|
||||
stockReturn.setError_msg(e.getMessage());
|
||||
stockReturn.setStatus(StockReturnStatusEnum.FAIL.getCode());
|
||||
}
|
||||
iPmStockReturnService.save(stockReturn);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
||||
@@ -28,7 +28,7 @@ public enum IOSEnum {
|
||||
BILL_STATUS(MapOf.of("生成","10", "分配中", "20", "分配完", "30", "完成", "99")),
|
||||
|
||||
// 入库业务类型
|
||||
BILL_TYPE(MapOf.of("生产入库","0001", "采购入库", "0005","生产领料", "0006", "手工入库", "0009","销售出库","1001","生产出库","1005","调拨出库","1004", "手工出库", "1009")),
|
||||
BILL_TYPE(MapOf.of("生产入库","0001", "采购入库", "0005","生产领料", "0006","库存调拨", "0007", "手工入库", "0009","销售出库","1001","生产出库","1005","调拨出库","1004", "手工出库", "1009")),
|
||||
|
||||
//入库分配明细状态
|
||||
INBILL_DIS_STATUS(MapOf.of("未生成", "00", "生成", "01", "执行中", "02", "完成", "99")),
|
||||
|
||||
@@ -202,6 +202,7 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
|
||||
ioStorInvDtl.put("qty_unit_name", row.get("qty_unit_name"));
|
||||
ioStorInvDtl.put("source_bill_type", row.get("ext_type"));
|
||||
ioStorInvDtl.put("source_bill_code", row.get("ext_code"));
|
||||
ioStorInvDtl.put("source_billdtl_id", row.get("source_billdtl_id"));
|
||||
ioStorInvDtl.put("callback_strategy", row.get("callback_strategy"));
|
||||
ioStorInvDtl.put("assign_qty", "0");
|
||||
ioStorInvDtl.put("unassign_qty", row.get("qty"));
|
||||
|
||||
@@ -114,6 +114,11 @@ public class GroupPlate implements Serializable {
|
||||
*/
|
||||
private String ext_type;
|
||||
|
||||
/**
|
||||
* 来源单据明细
|
||||
*/
|
||||
private String ext_dtl_code;
|
||||
|
||||
/**
|
||||
* 上料口
|
||||
*/
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.ext_manage.service.WmsToErpService;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.enums.StockReturnStatusEnum;
|
||||
@@ -90,7 +91,11 @@ public class PmStockReturnServiceImpl extends ServiceImpl<PmStockReturnMapper, P
|
||||
}
|
||||
try {
|
||||
JSONObject requestData = parseRequestData(stockReturn.getRequest_data());
|
||||
wmsToErpService.uploadErp(requestData);
|
||||
if (stockReturn.getRequest_type().equals(IOSEnum.BILL_TYPE.code("生产领料"))){
|
||||
wmsToErpService.dealBus(requestData);
|
||||
}else{
|
||||
wmsToErpService.uploadErp(requestData);
|
||||
}
|
||||
stockReturn.setStatus(StockReturnStatusEnum.SUCESS.getCode());
|
||||
stockReturn.setError_msg(null);
|
||||
stockReturn.setProcess_time(DateUtil.now());
|
||||
|
||||
@@ -49,7 +49,8 @@ public class DealPurchaseRecBillCallback implements CallbackStrategy {
|
||||
List<EasAuditRequestDto.EasAuditEntryDto> entryList = new ArrayList<>();
|
||||
Purchasedtl purchasedtl = purchasedtlService.getOne(new LambdaQueryWrapper<Purchasedtl>()
|
||||
.eq(Purchasedtl::getBill_id, orderCode)
|
||||
.eq(Purchasedtl::getSku_code, param.getMaterial_code()));
|
||||
// .eq(Purchasedtl::getSku_code, param.getMaterial_code())
|
||||
.eq(Purchasedtl::getItem_no, param.getSource_billdtl_id()));
|
||||
|
||||
purchasedtl.setInstock_qty(param.getPlan_qty().add(purchasedtl.getInstock_qty()));
|
||||
purchasedtlService.updateById(purchasedtl);
|
||||
|
||||
Reference in New Issue
Block a user