forked from I3-YF/i3plus-mes-yfai
merge 装车单打印
commit
7349798613
@ -1,16 +1,42 @@
|
|||||||
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
|
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
|
||||||
|
|
||||||
|
import cn.estsh.i3plus.ext.mes.api.base.IMesLoadingListService;
|
||||||
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
|
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pojo.model.PrintDataRequest;
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList;
|
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement;
|
||||||
|
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
|
||||||
|
import cn.estsh.impp.framework.boot.util.ResultBean;
|
||||||
|
import cn.estsh.impp.framework.boot.util.ValidatorBean;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Api(description = "装车单主页面")
|
@Api(description = "装车单主页面")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesLoadingVehiclesOrder")
|
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesLoadingVehiclesOrder")
|
||||||
|
|
||||||
public class MesLoadingListController extends BaseMesController<MesLoadingList> {
|
public class MesLoadingListController extends BaseMesController<MesLoadingList> {
|
||||||
|
@Autowired
|
||||||
|
private IMesLoadingListService loadingListService;
|
||||||
|
|
||||||
|
@PostMapping(value = "/doPrint")
|
||||||
|
@ApiOperation(value = "打印未打印发运单后修改状态")
|
||||||
|
public ResultBean doMesMesLoadingListPrint(@RequestBody PrintDataRequest request) {
|
||||||
|
try {
|
||||||
|
boolean reprint = request.getIsReprint() != null ? request.getIsReprint() : false;
|
||||||
|
// 数据校验
|
||||||
|
return loadingListService.doMesMesLoadingListPrint(request.getIds(), reprint);
|
||||||
|
} catch (ImppBusiException e) {
|
||||||
|
return ResultBean.fail(e).build();
|
||||||
|
} catch (Exception e) {
|
||||||
|
return ResultBean.fail(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,165 @@
|
|||||||
|
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.print.loadingList.strategy;
|
||||||
|
|
||||||
|
import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
|
||||||
|
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.print.IPrintTemplateStrategyService;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pojo.model.ChengDuLoadingListDetailPrintModel;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pojo.model.ChengDuLoadingListPrintModel;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pojo.model.MesProduceSnPrintModel;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
|
||||||
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
||||||
|
import cn.estsh.i3plus.platform.common.tool.TimeTool;
|
||||||
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
||||||
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
||||||
|
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
|
||||||
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
||||||
|
import cn.estsh.i3plus.pojo.base.util.StringUtil;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.MesNumberRule;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresSrmRunSheetJis;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingListDetail;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.repository.MesLoadingListDetailRepository;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.repository.MesLoadingListRepository;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementDetailRepository;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementRepository;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.repository.seres.IMesCimSeresSrmRunSheetJisRepository;
|
||||||
|
import cn.estsh.impp.framework.boot.util.ResultBean;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description : 装配目视单标签打印
|
||||||
|
* @Reference :
|
||||||
|
* @Author : Castle
|
||||||
|
* @CreateDate : 2024/6/17 16:43
|
||||||
|
* @Modify:
|
||||||
|
**/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class ChengDuLoadingListPrintStrategy implements IPrintTemplateStrategyService {
|
||||||
|
@Autowired
|
||||||
|
private MesLoadingListRepository loadingListRDao;
|
||||||
|
@Autowired
|
||||||
|
private MesLoadingListDetailRepository loadingListDetailRDao;
|
||||||
|
@Autowired
|
||||||
|
private MesShippingOrderManagementRepository shippingOrderRDao;
|
||||||
|
@Autowired
|
||||||
|
private MesShippingOrderManagementDetailRepository shippingOrderDetailRDao;
|
||||||
|
@Autowired
|
||||||
|
private IMesCimSeresSrmRunSheetJisRepository runSheetJisRDao;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MesProduceSnPrintModel execute(GenSerialNoModel model, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResultBean execute(List<MesLoadingList> loadingLists, boolean reprint) {
|
||||||
|
List<ChengDuLoadingListPrintModel> modelList = new ArrayList<>();
|
||||||
|
for (MesLoadingList loadingList : loadingLists) {
|
||||||
|
ChengDuLoadingListPrintModel model = getPrintData(loadingList, reprint);
|
||||||
|
if (model != null) {
|
||||||
|
modelList.add(model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ResultBean.success("装车单打印成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(modelList);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ChengDuLoadingListPrintModel getPrintData(MesLoadingList loadingList, boolean reprint) {
|
||||||
|
final String organizeCode = AuthUtilExt.getOrganizeCode();
|
||||||
|
final String userName = AuthUtilExt.getUserName();
|
||||||
|
|
||||||
|
ChengDuLoadingListPrintModel model = new ChengDuLoadingListPrintModel();
|
||||||
|
model.setPrintTime(TimeTool.getNowTime(true));
|
||||||
|
model.setOrderCode(loadingList.getOrderCode());
|
||||||
|
model.setTruckNo(loadingList.getTruckNo());
|
||||||
|
model.setSendDockCode(loadingList.getSendDockCode());
|
||||||
|
|
||||||
|
int loadingListDetailSeq = 0;
|
||||||
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
||||||
|
DdlPreparedPack.getNumEqualPack(loadingList.getId(), "pid", packBean);
|
||||||
|
DdlPreparedPack.getOrderBy("shippingCode", CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), packBean);
|
||||||
|
List<MesLoadingListDetail> loadingListDetails = loadingListDetailRDao.findByHqlWhere(packBean);
|
||||||
|
for (MesLoadingListDetail detail : loadingListDetails) {
|
||||||
|
ChengDuLoadingListDetailPrintModel detailPrintModel = new ChengDuLoadingListDetailPrintModel();
|
||||||
|
if (StringUtils.isEmpty(detail.getShippingCode())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
DdlPackBean jisPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
||||||
|
DdlPreparedPack.getStringEqualPack(detail.getShippingCode(), "docNo", jisPackBean);
|
||||||
|
MesCimSeresSrmRunSheetJis sheetJis = runSheetJisRDao.getByProperty(jisPackBean);
|
||||||
|
if (sheetJis == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
detailPrintModel.setProductClass(detail.getShippingCode());
|
||||||
|
detailPrintModel.setGoOutTime(sheetJis.getGoOutTime());
|
||||||
|
detailPrintModel.setGoToTime(sheetJis.getGoToTime());
|
||||||
|
|
||||||
|
DdlPackBean shippingPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
||||||
|
DdlPreparedPack.getStringEqualPack(detail.getShippingCode(), "shippingCode", shippingPackBean);
|
||||||
|
MesShippingOrderManagement shippingOrder = shippingOrderRDao.getByProperty(shippingPackBean);
|
||||||
|
if (shippingOrder == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
detailPrintModel.setPartClass(shippingOrder.getShippingGroupCode());
|
||||||
|
|
||||||
|
double amount = 0;
|
||||||
|
DdlPackBean shippingDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
||||||
|
DdlPreparedPack.getNumEqualPack(shippingOrder.getId(), "pid", shippingDetailPackBean);
|
||||||
|
List<MesShippingOrderManagementDetail> shippingOrderDetails = shippingOrderDetailRDao.findByHqlWhere(shippingDetailPackBean);
|
||||||
|
for (MesShippingOrderManagementDetail shippingOrderDetail : shippingOrderDetails) {
|
||||||
|
amount += shippingOrderDetail.getPlanQty();
|
||||||
|
}
|
||||||
|
|
||||||
|
detailPrintModel.setSeqNo(++loadingListDetailSeq);
|
||||||
|
detailPrintModel.setAmount(amount);
|
||||||
|
model.getDetails().add(detailPrintModel);
|
||||||
|
}
|
||||||
|
if (!CollectionUtils.isEmpty(model.getDetails())) {
|
||||||
|
model.setShippingCount(model.getShippingCount());
|
||||||
|
|
||||||
|
double totalAmount = 0.0;
|
||||||
|
String maxGoToTime = null;
|
||||||
|
String minGoOutTime = null;
|
||||||
|
for (ChengDuLoadingListDetailPrintModel detailPrintModel : model.getDetails()) {
|
||||||
|
totalAmount += detailPrintModel.getAmount();
|
||||||
|
if (!StringUtils.isEmpty(detailPrintModel.getGoToTime())) {
|
||||||
|
if (StringUtils.isEmpty(maxGoToTime) || maxGoToTime.compareTo(detailPrintModel.getGoToTime()) < 0) {
|
||||||
|
maxGoToTime = detailPrintModel.getGoToTime();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!StringUtils.isEmpty(detailPrintModel.getGoOutTime())) {
|
||||||
|
if (StringUtils.isEmpty(minGoOutTime) || detailPrintModel.getGoOutTime().compareTo(minGoOutTime) < 0) {
|
||||||
|
minGoOutTime = detailPrintModel.getGoOutTime();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
model.setGoToTime(maxGoToTime);
|
||||||
|
model.setGoOutTime(minGoOutTime);
|
||||||
|
model.setTotalAmount(totalAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询原有报文 根据shippingCode;
|
||||||
|
loadingList.setPrintCount(StringUtil.isEmpty(loadingList.getPrintCount())?1:loadingList.getPrintCount()+1);
|
||||||
|
loadingList.setLastPrintTime(TimeTool.getNowTime(true));
|
||||||
|
loadingList.setLastPrintUser(userName);
|
||||||
|
ConvertBean.serviceModelUpdate(loadingList, userName);
|
||||||
|
loadingListRDao.update(loadingList);
|
||||||
|
|
||||||
|
if (reprint) {
|
||||||
|
model.setRePrintDatetime(TimeTool.getNowTime(MesExtConstWords.DATETIME_FORMAT_SINGLE_SLASH));
|
||||||
|
model.setRePrintUser(userName);
|
||||||
|
model.setIsRePrint("重打印");
|
||||||
|
}
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package cn.estsh.i3plus.ext.mes.pojo.model;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 成都装车单打印明细
|
||||||
|
* @author jason.niu
|
||||||
|
* @description
|
||||||
|
* @date 2025/3/15 13:53
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ApiModel("成都装车单打印明细")
|
||||||
|
public class ChengDuLoadingListDetailPrintModel {
|
||||||
|
|
||||||
|
@ApiModelProperty("序号")
|
||||||
|
private Integer seqNo;
|
||||||
|
|
||||||
|
@ApiModelProperty("最迟到达时间")
|
||||||
|
private String goToTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("最早发运时间")
|
||||||
|
private String goOutTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("零件类")
|
||||||
|
private String partClass;
|
||||||
|
|
||||||
|
@ApiModelProperty("产品类")
|
||||||
|
private String productClass;
|
||||||
|
|
||||||
|
@ApiModelProperty("数量汇总")
|
||||||
|
private Double amount;
|
||||||
|
}
|
@ -0,0 +1,57 @@
|
|||||||
|
package cn.estsh.i3plus.ext.mes.pojo.model;
|
||||||
|
|
||||||
|
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 成都装车单打印
|
||||||
|
* @author jason.niu
|
||||||
|
* @description
|
||||||
|
* @date 2025/3/15 13:53
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ApiModel("成都装车单打印")
|
||||||
|
public class ChengDuLoadingListPrintModel {
|
||||||
|
|
||||||
|
@ApiModelProperty("是否重打印")
|
||||||
|
private String isRePrint = MesExtConstWords.EMPTY;
|
||||||
|
|
||||||
|
@ApiModelProperty("重打印操作人")
|
||||||
|
private String rePrintUser = MesExtConstWords.EMPTY;
|
||||||
|
|
||||||
|
@ApiModelProperty("重打印时间")
|
||||||
|
private String rePrintDatetime = MesExtConstWords.EMPTY;
|
||||||
|
|
||||||
|
@ApiModelProperty("车牌号")
|
||||||
|
private String truckNo;
|
||||||
|
|
||||||
|
@ApiModelProperty("发运道口")
|
||||||
|
private String sendDockCode;
|
||||||
|
|
||||||
|
@ApiModelProperty("装车单号")
|
||||||
|
private String orderCode;
|
||||||
|
|
||||||
|
@ApiModelProperty("打印时间")
|
||||||
|
private String printTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("最迟到达时间")
|
||||||
|
private String goToTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("最早发运时间")
|
||||||
|
private String goOutTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("小计")
|
||||||
|
private Integer shippingCount;
|
||||||
|
|
||||||
|
@ApiModelProperty("数量汇总")
|
||||||
|
private Double totalAmount;
|
||||||
|
|
||||||
|
@ApiModelProperty("明细")
|
||||||
|
private List<ChengDuLoadingListDetailPrintModel> details = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
|||||||
|
package cn.estsh.i3plus.ext.mes.pojo.model;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description : 打印前端请求参数
|
||||||
|
* @Reference :
|
||||||
|
* @Author : jason.niu
|
||||||
|
* @CreateDate 2025/3/15 15:48
|
||||||
|
* @Modify:
|
||||||
|
**/
|
||||||
|
@Data
|
||||||
|
public class PrintDataRequest {
|
||||||
|
@ApiModelProperty("是否为补打印")
|
||||||
|
private Boolean isReprint;
|
||||||
|
|
||||||
|
@ApiModelProperty("打印对象ID")
|
||||||
|
private List<Long> ids;
|
||||||
|
}
|
Loading…
Reference in New Issue