Browse Source

Merge remote-tracking branch 'origin/master_hella' into master_hella

hella_online_20250102
陈薪名 7 months ago
parent
commit
a5d087cb8c
  1. 1
      win-framework/win-common/src/main/java/com/win/framework/common/util/io/FileUtils.java
  2. 3
      win-module-qms/win-module-qms-biz/src/main/java/com/win/module/qms/api/inspectionJob/InspectionJobApiImpl.java
  3. 14
      win-module-qms/win-module-qms-biz/src/main/java/com/win/module/qms/service/inspectionJob/InspectionJobMainServiceImpl.java
  4. 23
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/PurchasePlanDetailController.java
  5. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailService.java
  6. 41
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailServiceImpl.java
  7. 29
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanImportServiceImpl.java

1
win-framework/win-common/src/main/java/com/win/framework/common/util/io/FileUtils.java

@ -72,6 +72,7 @@ public class FileUtils {
*/
public static String generatePath(byte[] content, String originalName) {
String sha256Hex = DigestUtil.sha256Hex(content);
sha256Hex = sha256Hex + "_"+System.currentTimeMillis();
// 情况一:如果存在 name,则优先使用 name 的后缀
if (StrUtil.isNotBlank(originalName)) {
String extName = FileNameUtil.extName(originalName);

3
win-module-qms/win-module-qms-biz/src/main/java/com/win/module/qms/api/inspectionJob/InspectionJobApiImpl.java

@ -130,6 +130,9 @@ public class InspectionJobApiImpl implements InspectionJobApi {
@Transactional
public void closeByPackNumbers(List<String> packNumbers) {
List<InspectionJobMainDO> inspectionJobMainDOList = inspectionJobMainService.getListByPackNumbers(packNumbers);
if(inspectionJobMainDOList == null){
return;
}
for (InspectionJobMainDO inspectionJobMainDO : inspectionJobMainDOList) {
inspectionJobMainDO.setStatus(JobStatusEnum.CLOSED.getCode());
trendsApi.createTrends(inspectionJobMainDO.getId(), "job_inspection_main", "关闭了检验任务", TrendsTypeEnum.JOB_CLOSE, String.valueOf(getLoginUserId()));

14
win-module-qms/win-module-qms-biz/src/main/java/com/win/module/qms/service/inspectionJob/InspectionJobMainServiceImpl.java

@ -641,10 +641,14 @@ public class InspectionJobMainServiceImpl implements InspectionJobMainService {
for (InspectionJobPackageDO inspectionJobPackageDO : inspectionJobPackageDOList) {
inspectionJobPackageID.add(inspectionJobPackageDO.getMasterId());
}
if (inspectionJobPackageID == null || inspectionJobPackageID.size() == 0) throw exception(INSPECTION_JOB_MAIN_NOT_EXISTS);
QueryWrapper<InspectionJobMainDO> inspectionJobMainDOQueryWrapper = new QueryWrapper<>();
inspectionJobMainDOQueryWrapper.in("id", inspectionJobPackageID);
inspectionJobMainDOQueryWrapper.eq("available", "TRUE");
return inspectionJobMainMapper.selectList(inspectionJobMainDOQueryWrapper);
// if (inspectionJobPackageID == null || inspectionJobPackageID.size() == 0) throw exception(INSPECTION_JOB_MAIN_NOT_EXISTS);
if(inspectionJobPackageID != null && inspectionJobPackageID.size() > 0){
QueryWrapper<InspectionJobMainDO> inspectionJobMainDOQueryWrapper = new QueryWrapper<>();
inspectionJobMainDOQueryWrapper.in("id", inspectionJobPackageID);
inspectionJobMainDOQueryWrapper.eq("available", "TRUE");
return inspectionJobMainMapper.selectList(inspectionJobMainDOQueryWrapper);
}else {
return null;
}
}
}

23
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/PurchasePlanDetailController.java

@ -32,6 +32,7 @@ import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.BeanUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -158,6 +159,7 @@ public class PurchasePlanDetailController {
vo.setCreator(userApi.getUserNickname(vo.getCreator()));
vo.setUpdater(userApi.getUserNickname(vo.getUpdater()));
PurchasePlanMainDO purchasePlanMainDO = mainMap.get(vo.getMasterId());
BigDecimal receivedQty = BigDecimal.ZERO;
if(purchasePlanMainDO != null){
purchasePlanMainDO.setId(null);
purchasePlanMainDO.setCreator(null);
@ -167,8 +169,14 @@ public class PurchasePlanDetailController {
purchasePlanMainDO.setRemark(null);
purchasePlanMainDO.setAvailable(null);
BeanUtil.copyProperties(purchasePlanMainDO,vo,options);
// 更新已经收货数量
BigDecimal purchaseReceiveQty = purchasePlanDetailService.updatePurchaseReceiveQty(purchasePlanMainDO.getNumber(),vo.getPoNumber(),vo.getPoLine(),vo.getItemCode());
if(purchaseReceiveQty.compareTo(BigDecimal.ZERO) > 0){
receivedQty = purchaseReceiveQty;
}else {
receivedQty = vo.getReceivedQty()==null?BigDecimal.ZERO:vo.getReceivedQty();//已收货数量
}
}
BigDecimal receivedQty = vo.getReceivedQty()==null?BigDecimal.ZERO:vo.getReceivedQty();//已收货数量
BigDecimal shippedQty = vo.getShippedQty()==null?BigDecimal.ZERO:vo.getShippedQty();//已发货数量
vo.setNotReceiveQty(shippedQty.subtract(receivedQty));//在途数量
PurchaseMainDO purchaseMainDO1 = purchaseMainMapper.selectByNumber(vo.getPoNumber());
@ -194,6 +202,7 @@ public class PurchasePlanDetailController {
return success(result);
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得要货计划子信息分页")
public CommonResult<PageResult<PurchasePlanDetailRespVO>> getPurchasePlanDetailSenior(@Valid @RequestBody CustomConditions conditions) {
@ -288,6 +297,7 @@ public class PurchasePlanDetailController {
vo.setCreator(userApi.getUserNickname(vo.getCreator()));
vo.setUpdater(userApi.getUserNickname(vo.getUpdater()));
PurchasePlanMainDO purchasePlanMainDO = mainMap.get(vo.getMasterId());
BigDecimal receivedQty = BigDecimal.ZERO;
if(purchasePlanMainDO != null){
purchasePlanMainDO.setId(null);
purchasePlanMainDO.setCreator(null);
@ -296,8 +306,15 @@ public class PurchasePlanDetailController {
purchasePlanMainDO.setUpdater(null);
purchasePlanMainDO.setRemark(null);
BeanUtil.copyProperties(purchasePlanMainDO,vo,options);
// 更新已经收货数量
BigDecimal purchaseReceiveQty = purchasePlanDetailService.updatePurchaseReceiveQty(purchasePlanMainDO.getNumber(),vo.getPoNumber(),vo.getPoLine(),vo.getItemCode());
if(purchaseReceiveQty.compareTo(BigDecimal.ZERO) > 0){
receivedQty = purchaseReceiveQty;
}else {
receivedQty = vo.getReceivedQty()==null?BigDecimal.ZERO:vo.getReceivedQty();//已收货数量
}
}
BigDecimal receivedQty = vo.getReceivedQty()==null?BigDecimal.ZERO:vo.getReceivedQty();//已收货数量
// BigDecimal receivedQty = vo.getReceivedQty()==null?BigDecimal.ZERO:vo.getReceivedQty();//已收货数量
BigDecimal shippedQty = vo.getShippedQty()==null?BigDecimal.ZERO:vo.getShippedQty();//已发货数量
vo.setNotReceiveQty(shippedQty.subtract(receivedQty));//在途数量
PurchaseMainDO purchaseMainDO1 = purchaseMainMapper.selectByNumber(vo.getPoNumber());
@ -318,6 +335,8 @@ public class PurchasePlanDetailController {
}
}
}
// 已收数量,在途数量 更新
}
}
return success(result);

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailService.java

@ -1,5 +1,6 @@
package com.win.module.wms.service.purchasePlan;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import javax.validation.*;
@ -99,4 +100,6 @@ public interface PurchasePlanDetailService {
* @param ppNumber
*/
void verifyBooleanMinPlan(String ppNumber);
BigDecimal updatePurchaseReceiveQty(String planNumber, String poNumber, String poLine, String itemCode);
}

41
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailServiceImpl.java

@ -12,10 +12,12 @@ import com.win.module.wms.dal.dataobject.interfaceinfo.InterfaceInfoDO;
import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordDetailDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.purchase.PurchaseDetailMapper;
import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanDetailMapper;
import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanMainMapper;
import com.win.module.wms.dal.mysql.purchasereceiptRecord.PurchasereceiptRecordDetailMapper;
import com.win.module.wms.enums.common.InterfaceTypeEnum;
import com.win.module.wms.service.interfaceinfo.InterfaceInfoService;
import com.win.module.wms.service.itembasic.ItembasicService;
@ -23,6 +25,7 @@ import com.win.module.wms.service.purchase.PurchaseMainService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.LocalDateTimeAdapter;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -60,9 +63,10 @@ public class PurchasePlanDetailServiceImpl implements PurchasePlanDetailService
private PurchaseMainService purchaseMainService;
@Resource
private PurchaseDetailMapper purchaseDetailMapper;
@Resource
private InterfaceInfoService interfaceInfoService;
@Resource
private PurchasereceiptRecordDetailMapper purchasereceiptRecordDetailMapper;
@Override
public Long createPurchasePlanDetail(PurchasePlanDetailCreateReqVO createReqVO) {
@ -356,7 +360,6 @@ public class PurchasePlanDetailServiceImpl implements PurchasePlanDetailService
throw exception(PURCHASE_PLAN_DELIVERYDATE_NOT_MIN,uesDate,planMainDOS1.get(0).getNumber(),selectDate);
}
}
}
/**
@ -379,4 +382,38 @@ public class PurchasePlanDetailServiceImpl implements PurchasePlanDetailService
return supplieritemService.selectSupplierItemExist(supplierCode, itemCode);
}
@Transactional
@Override
public BigDecimal updatePurchaseReceiveQty(String planNumber,String poNumber,String poLine,String itemCode) {
QueryWrapper<PurchasereceiptRecordDetailDO> purchasereceiptRecordDetailDOQueryWrapper = new QueryWrapper<>();
purchasereceiptRecordDetailDOQueryWrapper.select("sum(qty) as qty,po_number,po_line,item_code");
purchasereceiptRecordDetailDOQueryWrapper.inSql("number","select number from record_purchasereceipt_main where pp_number='"+planNumber+"'");
purchasereceiptRecordDetailDOQueryWrapper.eq("po_number",poNumber);
purchasereceiptRecordDetailDOQueryWrapper.eq("po_line",poLine);
purchasereceiptRecordDetailDOQueryWrapper.eq("item_code",itemCode);
purchasereceiptRecordDetailDOQueryWrapper.isNull("parent_packing_number");
purchasereceiptRecordDetailDOQueryWrapper.groupBy("po_number","po_line","item_code");
List<PurchasereceiptRecordDetailDO> purchasereceiptRecordDetailDOList = purchasereceiptRecordDetailMapper.selectList(purchasereceiptRecordDetailDOQueryWrapper);
if(purchasereceiptRecordDetailDOList != null && purchasereceiptRecordDetailDOList.size() > 0){
BigDecimal sumQty = BigDecimal.ZERO;
for(PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO:purchasereceiptRecordDetailDOList){
sumQty = sumQty.add(purchasereceiptRecordDetailDO.getQty());
}
QueryWrapper<PurchasePlanDetailDO> purchasePlanDetailDOQueryWrapper = new QueryWrapper<>();
purchasePlanDetailDOQueryWrapper.eq("number",planNumber);
purchasePlanDetailDOQueryWrapper.eq("po_number ", poNumber);
purchasePlanDetailDOQueryWrapper.eq("po_line", poLine);
purchasePlanDetailDOQueryWrapper.eq("item_code", itemCode);
PurchasePlanDetailDO purchasePlanDetailDO = purchasePlanDetailMapper.selectOne(purchasePlanDetailDOQueryWrapper,false);
if(purchasePlanDetailDO != null){
purchasePlanDetailDO.setReceivedQty(sumQty);
purchasePlanDetailMapper.updateById(purchasePlanDetailDO);
}
return sumQty;
}else {
return BigDecimal.ZERO;
}
}
}

29
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanImportServiceImpl.java

@ -273,9 +273,20 @@ public class PurchasePlanImportServiceImpl implements PurchasePlanImportService
}
if(emailInfoList.size() > 0){
try{
// 所有主表数据
QueryWrapper<PurchasePlanMainDO> queryWrapperAgain = new QueryWrapper<>();
queryWrapperAgain.in("supplier_code", new ArrayList<>(supplierCodeSet));
queryWrapperAgain.in("po_number", new ArrayList<>(poNumberCodeSet));
queryWrapperAgain.in("delivery_date", new ArrayList<>(deliveryDateSet));
List<PurchasePlanMainDO> purchasePlanMainDOSSAgain = purchasePlanMainMapper.selectList(queryWrapperAgain);//所有要货计划
for(PurchasePlanMainDO purchasePlanMainDO:purchasePlanMainDOSSAgain){
supplerNumberMap.put(purchasePlanMainDO.getSupplierCode(),purchasePlanMainDO.getNumber());
}
Map<String,String> supplerFilePathMap = splitExcelFile(file);
Iterator<Map.Entry<String, String>> iterator = supplerFilePathMap.entrySet().iterator();
while(iterator.hasNext()){
Thread.sleep(1000);
Map.Entry<String, String> entry = iterator.next();
String supplierCode = entry.getKey();
String filePath = entry.getValue();
@ -297,13 +308,17 @@ public class PurchasePlanImportServiceImpl implements PurchasePlanImportService
// 邮件参数拼接
Map<String, Object> templateParams = new HashMap<>();
templateParams.put("title",yearMonthDay+"_SCP要货_工厂代码"+tenantFactory+"_供应商代码"+supplierCode);
templateParams.put("planNumber",supplerNumberMap.get(supplierCode));
templateParams.put("tenantId",tenantFactory);
templateParams.put("tenantName",tenantFactoryName);
templateParams.put("supplerCode",supplierCode);
templateParams.put("supplerName",supplierNameMap.get(supplierCode));
templateParams.put("planNumber",supplerNumberMap.get(supplierCode) != null?supplerNumberMap.get(supplierCode):"");
templateParams.put("tenantId",tenantFactory != null?tenantFactory:"");
templateParams.put("tenantName",tenantFactoryName != null?tenantFactoryName:"");
templateParams.put("supplerCode",supplierCode != null?supplierCode:"");
templateParams.put("supplerName",supplierNameMap.get(supplierCode)!=null?supplerNumberMap.get(supplierCode):"");
File excelFile = new File(filePath);
mailSendService.sendCustomMail(mail,sendUserId,templateCode,templateParams,excelFile);
if(excelFile.exists()){
mailSendService.sendCustomMail(mail,sendUserId,templateCode,templateParams,excelFile);
}else {
log.error("供应商代码:{},文件不存在:{}",supplierCode,filePath);
}
}
}
}catch (Exception e){
@ -366,7 +381,7 @@ public class PurchasePlanImportServiceImpl implements PurchasePlanImportService
filePathMap.put(supplierCode,filePath);
}
}catch (Exception e){
log.error(e.getMessage(),e);
log.error("文件拆分异常:"+e.getMessage(),e);
}
log.info("拆分文件结束");
return filePathMap;

Loading…
Cancel
Save