仓库管理修改

liweidong
wusiyu 3 weeks ago
parent 3d10787ee0
commit 72bb608170
  1. 43
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/wms/AutoCheckMeasuringToolProcessor.java
  2. 30
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/ErpMeaToolTaskClient.java
  3. 62
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/entity/MeasuringUpkeepEntity.java
  4. 38
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java
  5. 26
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java
  6. 26
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/MeasuringToolMaintainVO.java
  7. 49
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/PurchaseTrackVO.java
  8. 41
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StBuyOrder.java
  9. 27
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/feign/ErpMeaToolTaskClientImpl.java
  10. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.java
  11. 34
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.xml
  12. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IMeasuringUpkeepService.java
  13. 53
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/MeasuringUpkeepServiceImpl.java
  14. 23
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java
  15. 7
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java
  16. 25
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml
  17. 10
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java
  18. 100
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java
  19. 7
      blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java
  20. 1
      blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StMoldApplyForController.java
  21. 22
      blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StWmsRequestController.java
  22. 2
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStBuyOrderService.java
  23. 4
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStWmsRequestService.java
  24. 25
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java
  25. 69
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StWmsRequestServiceImpl.java

@ -0,0 +1,43 @@
package org.springblade.job.processor.wms;
import jakarta.annotation.Resource;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.device.feign.ErpMeaToolTaskClient;
import org.springblade.wms.feign.WmsTaskClient;
import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName AutoCheckMeasuringToolProcessor
* @description:
* @autor: WuSiYu
* @create 2026-05-27 10:27
**/
@Component
@Data
@Slf4j
public class AutoCheckMeasuringToolProcessor implements BasicProcessor {
@Resource
ErpMeaToolTaskClient erpMeaToolTaskClient;
@Override
public ProcessResult process(TaskContext context) throws Exception {
log.info("开始执行量具自动检定");
try {
// 调用远程服务执行量具检定逻辑
erpMeaToolTaskClient.autoCheckMeasuringTool();
log.info("===== 量具自动检定完成 =====");
return new ProcessResult(result);
} catch (Exception e) {
log.error("===== 量具自动检定异常 =====", e);
return new ProcessResult(false, e.getMessage());
}
}
}

@ -0,0 +1,30 @@
package org.springblade.desk.device.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName ErpMeaToolTaskClient
* @description:
* @autor: WuSiYu
* @create 2026-05-28 14:38
**/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface ErpMeaToolTaskClient {
String API_PREFIX = "/feign/client/erp-task";
String AUTO_CHECK_MEASURING_TOOL = API_PREFIX + "/autoCheckMeasuringTool";
/**
* 同步量具数据
*/
@GetMapping(AUTO_CHECK_MEASURING_TOOL)
void autoCheckMeasuringTool();
}

@ -1,17 +1,13 @@
package org.springblade.desk.device.pojo.entity;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal;
import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@ -54,7 +50,42 @@ public class MeasuringUpkeepEntity extends BaseEntity {
* 审批状态;-1
*/
@Schema(description = "审批状态;-1")
private Short approvalStatus;
private Short approvalStaus;
/**
* 物料编号
*/
@Schema(description = "物料编号")
private String goodsCode;
/**
* 库房编号
*/
@Schema(description = "库房编号")
private String shCode;
/**
* 库位号
*/
@Schema(description = "库位号")
private String location;
/**
* 生产标识
*/
@Schema(description = "生产标识")
private String quantityLevel;
/**
* 检定数量
*/
@Schema(description = "检定数量")
private Double checkQty;
/**
* 检定确认时间
*/
@Schema(description = "检定确认时间")
private Date checkTime;
/**
* 检定标记
*/
@Schema(description = "检定标记")
private Integer checkFlag;
/**
* 库存物料
*/
@ -69,6 +100,21 @@ public class MeasuringUpkeepEntity extends BaseEntity {
*/
public static Integer CURSTATUS_YSQ = 1;
/**
* 检定标记 - 未检查
*/
public static Integer CHECK_FLAG_UNCHECKED = 0;
/**
* 检定标记 - 检验合格
*/
public static Integer CHECK_FLAG_PASS = 1;
/**
* 检定标记 - 检验不合格
*/
public static Integer CHECK_FLAG_FAIL = 2;
public static Map<Integer, String> curStatusMap = new HashMap<>(3);
static {

@ -3,6 +3,8 @@ package org.springblade.erpdata.feign;
import org.springblade.common.constant.LauncherConstant;
import org.springblade.common.exception.BusinessException;
import org.springblade.core.tool.api.R;
import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO;
import org.springblade.erpdata.pojo.vo.PurchaseTrackVO;
import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO;
import org.springblade.wms.pojo.entity.StRealtimeStock;
import org.springframework.cloud.openfeign.FeignClient;
@ -32,12 +34,20 @@ public interface IErpDataWmsClient {
String SEND_ERP_BUY_REQUEST = API_PREFIX + "/sendErpBuyRequest";
String CREATE_OR_REPLACE = API_PREFIX + "/createOrReplace";
String CREATE_MOLD_PLAN = API_PREFIX + "/createMoldPlan";
String DELETE_MOLD_PLAN = API_PREFIX + "/deleteMoldPlan";
String SEND_ERP_MAINTENANCE = API_PREFIX + "/sendErpMaintenance";
String GET_GOODS_EXT_STATUS = API_PREFIX + "/getGoodsExtStatus";
String GET_BUY_ORDER_STATUS = API_PREFIX + "/getBuyOrderStatus";
String GET_MAINTEN_STATUS = API_PREFIX + "/getMaintenStatus";
/**
* 到期送检发送erp
*/
@ -50,6 +60,14 @@ public interface IErpDataWmsClient {
@PostMapping(SEND_ERP_BUY_REQUEST)
R<String> sendErpBuyRequest(@RequestParam("extraBill")String extraBill, @RequestParam("qty")Double qty, @RequestParam("ldapName")String ldapName) throws BusinessException;
/**
* 仓库提请修改erp
*/
@PostMapping(CREATE_OR_REPLACE)
R<String> createOrReplace(@RequestParam("extraBill")String extraBill, @RequestParam("goodsCode")String goodsCode, @RequestParam("flag")String flag,
@RequestParam("qty")Double qty, @RequestParam("amount")Double amount) throws BusinessException;
/**
* 工装计划申报发送erp
*/
@ -64,10 +82,30 @@ public interface IErpDataWmsClient {
@PostMapping(DELETE_MOLD_PLAN)
R<String> deleteMoldPlan(@RequestParam("erpWoCode")String erpWoCode) throws BusinessException;
/**
* 量具保养发送erp
*/
@PostMapping(SEND_ERP_MAINTENANCE)
R<String> sendErpMaintenance(@RequestParam("goodsCode")String goodsCode, @RequestParam("shCode")String shCode, @RequestParam("location")String location,
@RequestParam("needDate") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date needDate,
@RequestParam("flag")String flag ,@RequestParam("checkQty")Double checkQty, @RequestParam("quantityLevel")String quantityLevel) throws BusinessException;
/**
* 物料状态监控同步
*/
@PostMapping(GET_GOODS_EXT_STATUS)
R<StGoodsExtStatusVO> getGoodsExtStatus(@RequestParam("goodsCode")String goodsCode);
/**
* 采购跟踪
*/
@PostMapping(GET_BUY_ORDER_STATUS)
R<PurchaseTrackVO> getBuyOrderStatus(@RequestParam("extraBill")String extraBill);
/**
* 量具检定
*/
@PostMapping(GET_MAINTEN_STATUS)
R<MeasuringToolMaintainVO> getMaintenStatus(@RequestParam("goodsCode")String goodsCode, @RequestParam("shCode")String shCode,
@RequestParam("location")String location, @RequestParam("createTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date createTime);
}

@ -1,6 +1,8 @@
package org.springblade.erpdata.feign;
import org.springblade.core.tool.api.R;
import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO;
import org.springblade.erpdata.pojo.vo.PurchaseTrackVO;
import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO;
import org.springblade.wms.pojo.entity.StRealtimeStock;
import org.springframework.format.annotation.DateTimeFormat;
@ -30,6 +32,12 @@ public class IErpDataWmsClientFallback implements IErpDataWmsClient{
return R.fail("获取数据失败");
}
@Override
public R<String> createOrReplace(@RequestParam("extraBill")String extraBill, @RequestParam("goodsCode")String goodsCode, @RequestParam("flag")String flag,
@RequestParam("qty")Double qty, @RequestParam("amount")Double amount) {
return R.fail("获取数据失败");
}
@Override
public R<String> createMoldPlan(@RequestParam(value = "partCode", required = false)String partCode, @RequestParam("moCode")String moCode, @RequestParam("plantype")String plantype, @RequestParam("quantity")Double quantity,
@RequestParam("needDate") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date needDate, @RequestParam("level")String level, @RequestParam("keeper")String keeper, @RequestParam("createMan")String createMan,
@ -42,9 +50,27 @@ public class IErpDataWmsClientFallback implements IErpDataWmsClient{
return R.fail("获取数据失败");
}
@Override
public R<String> sendErpMaintenance(@RequestParam("goodsCode")String goodsCode, @RequestParam("shCode")String shCode, @RequestParam("location")String location,
@RequestParam("needDate") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date needDate,
@RequestParam("flag")String flag ,@RequestParam("checkQty")Double checkQty, @RequestParam("quantityLevel")String quantityLevel) {
return R.fail("获取数据失败");
}
@Override
public R<StGoodsExtStatusVO> getGoodsExtStatus(@RequestParam("goodsCode")String goodsCode) {
return R.fail("获取数据失败");
}
@Override
public R<PurchaseTrackVO> getBuyOrderStatus(@RequestParam("extraBill")String extraBill) {
return R.fail("获取数据失败");
}
@Override
public R<MeasuringToolMaintainVO> getMaintenStatus(@RequestParam("goodsCode")String goodsCode, @RequestParam("shCode")String shCode,
@RequestParam("location")String location, @RequestParam("createTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date createTime) {
return R.fail("获取数据失败");
}
}

@ -0,0 +1,26 @@
package org.springblade.erpdata.pojo.vo;
import lombok.Data;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName MeasuringToolMaintainVO
* @description:
* @autor: WuSiYu
* @create 2026-05-26 21:24
**/
@Data
public class MeasuringToolMaintainVO {
/**
* 检定标记
*/
private String chkflag;
/**
* 检定标记检定日期
*/
private Date chkdate;
}

@ -0,0 +1,49 @@
package org.springblade.erpdata.pojo.vo;
import lombok.Data;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName PurchaseTrackVO
* @description:
* @autor: WuSiYu
* @create 2026-05-25 16:15
**/
@Data
public class PurchaseTrackVO {
/**
* 额外号
*/
private String orderno;
/**
* 负责人账号
*/
private String relctrler;
/**
* 负责人名称
*/
private String relctrlerName;
/**
* 需求状态
*/
private Short reqstat;
/**
* 采购申请单号RPNO
*/
private String rpno;
/**
* 采购人账号
*/
private String purcode;
/**
* 采购人名称
*/
private String purcodeName;
}

@ -165,6 +165,33 @@ public class StBuyOrder extends TenantEntity {
@Schema(description = "二级审批时间")
private Date approvalTime2;
/**
* 采购部计划员ID
*/
@Schema(description = "采购部计划员ID")
private Long planBuyMan;
/**
* 采购部计划员名称
*/
@Schema(description = "采购部计划员名称")
private String planBuyManName;
/**
* 需求状态
*/
@Schema(description = "需求状态")
private Short needStatus;
/**
* erp采购单号
*/
@Schema(description = "erp采购单号")
private String erpBuyCode;
@TableField(exist = false)
private String buyManName;
@TableField(exist = false)
private String declareManName;
@ -237,5 +264,19 @@ public class StBuyOrder extends TenantEntity {
*/
public static final short APPROVAL_STATUS_SECOND_UNPASS = 4;
/**
* 需求状态 0等候;1计划确认;2已生成定单;4未生成定单;5已做批料;6未批准;7需求取消;8车间取消;9车间批准;10车间未批
*/
public static Short NEED_STATUS_WAIT = 0; // 等候
public static Short NEED_STATUS_PLAN_CONFIRM = 1; // 计划确认
public static Short NEED_STATUS_ORDER_GENERATED = 2; // 已生成定单
public static Short NEED_STATUS_ORDER_NOT_GENERATED = 4; // 未生成定单
public static Short NEED_STATUS_BATCH_MADE = 5; // 已做批料
public static Short NEED_STATUS_NOT_APPROVED = 6; // 未批准
public static Short NEED_STATUS_REQUIRE_CANCEL = 7; // 需求取消
public static Short NEED_STATUS_WORKSHOP_CANCEL = 8; // 车间取消
public static Short NEED_STATUS_WORKSHOP_APPROVE = 9; // 车间批准
public static Short NEED_STATUS_WORKSHOP_NOT_APPROVE = 10;// 车间未批
}

@ -0,0 +1,27 @@
package org.springblade.desk.device.feign;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import org.springblade.desk.device.service.IMeasuringUpkeepService;
import org.springframework.web.bind.annotation.RestController;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName ErpMeaToolTaskClientImpl
* @description:
* @autor: WuSiYu
* @create 2026-05-28 14:33
**/
@RestController
@Hidden
public class ErpMeaToolTaskClientImpl implements ErpMeaToolTaskClient {
@Resource
private IMeasuringUpkeepService measuringUpkeepService;
@Override
public void autoCheckMeasuringTool() {
measuringUpkeepService.autoCheckMeasuringTool();
}
}

@ -1,14 +1,15 @@
package org.springblade.desk.device.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity;
import org.springblade.desk.device.pojo.excel.MeasuringUpkeepExcel;
import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery;
import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.device.pojo.vo.ToolingLibraryVO;
import org.springblade.wms.pojo.vo.StRealtimeStockVO;
import java.util.List;
@ -46,4 +47,9 @@ public interface MeasuringUpkeepMapper extends BaseMapper<MeasuringUpkeepEntity>
*/
List<MeasuringUpkeepExcel> exportMeasuringUpkeep(@Param("ew") Wrapper<MeasuringUpkeepEntity> queryWrapper);
StRealtimeStockVO getStockById(Long id);
void updateStock(Long id, Double checkQty);
void updateStockById(Long miId, Double checkQty);
}

@ -92,6 +92,7 @@
<result column="quantity_level" property="quantityLevel"/>
<result column="balance_money" property="balanceMoney"/>
<result column="sum_num" property="sumNum"/>
<result column="stay_maintain_num" property="stayMaintainNum"/>
</resultMap>
<!-- 多表联合查询SQL -->
@ -176,7 +177,7 @@
and (toolingLibrary.muStatus == null or toolingLibrary.muStatus == '')
and (toolingLibrary.goodsName == null or toolingLibrary.goodsName == '')
and (toolingLibrary.piNo == null or toolingLibrary.piNo == '')">
AND st.sum_num >= 270
AND st.stay_maintain_num >= 270
</if>
<!-- 库房 -->
@ -210,4 +211,35 @@
FROM MES_MEASURING_UPKEEP ${ew.customSqlSegment}
</select>
<select id="getStockById" resultType="org.springblade.wms.pojo.vo.StRealtimeStockVO">
SELECT
s.*,
m.goods_code , -- 物料编号
w.sh_code , -- 库房编号
ws.location -- 库位号
FROM st_realtime_stock s
LEFT JOIN ST_GOODS m ON s.goods_id = m.id
LEFT JOIN ST_STOREHOUSE w ON s.sh_id = w.id
LEFT JOIN ST_STORAGE_LOCATION ws ON s.sl_id = ws.id
WHERE s.id = #{id}
AND s.is_deleted = 0
AND s.stop_use = 0
</select>
<update id="updateStock">
UPDATE st_realtime_stock
SET occupy_quantity = occupy_quantity + #{checkQty},
is_measure_maintenance = 1,
update_time = NOW()
WHERE id = #{id}
</update>
<update id="updateStockById">
UPDATE st_realtime_stock
SET STAY_MAINTAIN_NUM = 0,
is_measure_maintenance = 0,
occupy_quantity = occupy_quantity - #{checkQty},
update_time = NOW()
WHERE id = #{id}
</update>
</mapper>

@ -58,4 +58,6 @@ public interface IMeasuringUpkeepService extends BaseService<MeasuringUpkeepEnti
* @param ids
*/
R addMaintenance(List<Long> ids);
void autoCheckMeasuringTool();
}

@ -2,9 +2,12 @@ package org.springblade.desk.device.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.exception.BusinessException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
@ -16,6 +19,9 @@ import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery;
import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO;
import org.springblade.desk.device.pojo.vo.ToolingLibraryVO;
import org.springblade.desk.device.service.IMeasuringUpkeepService;
import org.springblade.erpdata.feign.IErpDataWmsClient;
import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO;
import org.springblade.wms.pojo.vo.StRealtimeStockVO;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -51,6 +57,9 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepM
@Value("${request.lims.url}")
private String limsUrl;
@Resource
IErpDataWmsClient erpDataWmsClient;
@Override
public IPage<MeasuringUpkeepVO> selectMeasuringUpkeepPage(IPage<MeasuringUpkeepVO> page, MeasuringUpkeepQuery measuringUpkeep) {
// return page.setRecords(baseMapper.selectMeasuringUpkeepPage(page, measuringUpkeep));
@ -135,15 +144,57 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepM
ids.forEach(id -> {
MeasuringUpkeepEntity entity = new MeasuringUpkeepEntity();
entity.setMiId(id);
entity.setStatus(MeasuringUpkeepEntity.CURSTATUS_NEW);
StRealtimeStockVO stock = baseMapper.getStockById(id);
entity.setCheckFlag(0);
entity.setMmCode(nextCode(1));
entity.setGoodsCode(stock.getGoodsCode());
entity.setShCode(stock.getShCode());
entity.setLocation(stock.getLocation());
entity.setCheckQty(stock.getQuantity());
entity.setQuantityLevel("0");
entity.setCreateMan(AuthUtil.getUser() != null ? AuthUtil.getUser().getUserId() : 1);
list.add(entity);
try {
erpDataWmsClient.sendErpMaintenance(entity.getGoodsCode(),entity.getShCode(),entity.getLocation(),
new Date(),"0",entity.getCheckQty(), "0");
} catch (BusinessException e) {
throw new RuntimeException("量具保养发送ERP失败:" + e.getMessage());
}
baseMapper.updateStock(id, entity.getCheckQty());
});
return R.status(this.saveBatch(list));
}
@Override
public void autoCheckMeasuringTool() {
try {
QueryWrapper<MeasuringUpkeepEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_deleted", 0);
queryWrapper.eq("check_flag", MeasuringUpkeepEntity.CHECK_FLAG_UNCHECKED);
queryWrapper.orderByDesc("create_time");
List<MeasuringUpkeepEntity> list = baseMapper.selectList(queryWrapper);
for (MeasuringUpkeepEntity entity : list) {
MeasuringToolMaintainVO maintainVO = erpDataWmsClient.getMaintenStatus(entity.getGoodsCode(),entity.getShCode(),
entity.getLocation(),entity.getCreateTime()).getData();
entity.setCheckFlag(Integer.valueOf(maintainVO.getChkflag()));
entity.setCheckTime(maintainVO.getChkdate());
if (entity.getCheckFlag() == 1) {
baseMapper.updateStockById(entity.getMiId(), entity.getCheckQty());
}
}
log.info("===== 量具保养检验状态定时更新完成 =====", list.size());
} catch (Exception e) {
log.info("===== 量具保养检验状态定时更新异常 =====", e);
}
}
/**
* 构建请求体
*/

@ -5,6 +5,8 @@ import lombok.AllArgsConstructor;
import org.springblade.common.exception.BusinessException;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO;
import org.springblade.erpdata.pojo.vo.PurchaseTrackVO;
import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO;
import org.springblade.erpdata.service.IErpDataWmsService;
import org.springblade.wms.pojo.entity.StRealtimeStock;
@ -37,6 +39,11 @@ public class ErpDataWmsClient implements IErpDataWmsClient{
return R.data(erpDataWmsService.sendErpBuyRequest(extraBill, qty, ldapName));
}
@Override
public R<String> createOrReplace(String extraBill, String goodsCode, String flag, Double qty, Double amount) throws BusinessException {
return R.data(erpDataWmsService.createOrReplace(extraBill, goodsCode, flag, qty, amount));
}
@Override
public R<String> createMoldPlan(String partCode, String moCode, String plantype, Double quantity, Date needDate, String level,
String keeper, String createMan, String memo, String urgentType, String erpWoCode) throws BusinessException {
@ -49,8 +56,24 @@ public class ErpDataWmsClient implements IErpDataWmsClient{
return R.data(erpDataWmsService.deleteMoldPlan(erpWoCode));
}
@Override
public R<String> sendErpMaintenance(String goodsCode, String shCode, String location, Date needDate,
String flag ,Double checkQty, String quantityLevel) throws BusinessException {
return R.data(erpDataWmsService.sendErpMaintenance(goodsCode, shCode, location, needDate, flag, checkQty, quantityLevel));
}
@Override
public R<StGoodsExtStatusVO> getGoodsExtStatus(String goodsCode) {
return R.data(erpDataWmsService.getGoodsExtStatus(goodsCode));
}
@Override
public R<PurchaseTrackVO> getBuyOrderStatus(String extraBill) {
return R.data(erpDataWmsService.getBuyOrderStatus(extraBill));
}
@Override
public R<MeasuringToolMaintainVO> getMaintenStatus(String goodsCode, String shCode, String location, Date createTime) {
return R.data(erpDataWmsService.getMaintenStatus(goodsCode, shCode, location, createTime));
}
}

@ -1,8 +1,12 @@
package org.springblade.erpdata.mapper;
import com.baomidou.mybatisplus.core.mapper.Mapper;
import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO;
import org.springblade.erpdata.pojo.vo.PurchaseTrackVO;
import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
@ -16,4 +20,7 @@ public interface ErpDataWmsMapper extends Mapper {
StGoodsExtStatusVO getGoodsExtStatus(String goodsCode);
PurchaseTrackVO getBuyOrderStatus(String extraBill);
MeasuringToolMaintainVO getMaintenStatus(String goodsCode, String shCode, String location, Date createTime);
}

@ -11,4 +11,29 @@
WHERE prtno = #{goodsCode}
</select>
<select id="getBuyOrderStatus" resultType="org.springblade.erpdata.pojo.vo.PurchaseTrackVO">
SELECT
a.orderno,
a.relctrler,
a.reqstat
c.userdesc AS relctrler_name,
a.rpno,
d.purcode,
e.userdesc AS purcode_name
FROM dba_mgr.t_purotherrp a
LEFT JOIN aepcs_system.t_sysuser c ON a.relctrler = c.username
LEFT JOIN dba_mgr.t_poitem d ON a.rpno = d.rpno
LEFT JOIN aepcs_system.t_sysuser e ON d.purcode = e.username
WHERE a.orderno = #{extraBill}
</select>
<select id="getMaintenStatus" resultType="org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO">
SELECT chkflag,
chkdate
FROM dba_mgr.t_toochkinf
WHERE prtno = #{goodsCode}
AND warno = #{shCode}
AND warlocno = #{location}
AND applydate= #{createTime}
</select>
</mapper>

@ -1,6 +1,8 @@
package org.springblade.erpdata.service;
import org.springblade.common.exception.BusinessException;
import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO;
import org.springblade.erpdata.pojo.vo.PurchaseTrackVO;
import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO;
import org.springblade.wms.pojo.entity.StRealtimeStock;
@ -26,4 +28,12 @@ public interface IErpDataWmsService {
String deleteMoldPlan(String erpWoCode) throws BusinessException;
StGoodsExtStatusVO getGoodsExtStatus(String goodsCode);
String createOrReplace(String extraBill, String goodsCode, String flag, Double qty, Double amount) throws BusinessException;
PurchaseTrackVO getBuyOrderStatus(String extraBill);
String sendErpMaintenance(String goodsCode, String shCode, String location, Date needDate, String flag, Double checkQty, String quantityLevel) throws BusinessException;
MeasuringToolMaintainVO getMaintenStatus(String goodsCode, String shCode, String location, Date createTime);
}

@ -6,6 +6,8 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.exception.BusinessException;
import org.springblade.erpdata.mapper.ErpDataWmsMapper;
import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO;
import org.springblade.erpdata.pojo.vo.PurchaseTrackVO;
import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO;
import org.springblade.erpdata.service.IErpDataWmsService;
import org.springblade.wms.pojo.entity.StRealtimeStock;
@ -125,6 +127,47 @@ public class ErpDataWmsServiceImpl implements IErpDataWmsService {
return excflag;
}
@Override
public String createOrReplace(String extraBill, String goodsCode, String flag, Double qty, Double amount) throws BusinessException {
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
// 指定存储过程名(包含 DB Link)
.withProcedureName("dba_mgr.pro_rbmesinvdeptoutchg")
// 关闭元数据访问(DBLink 必须加)
.withoutProcedureColumnMetaDataAccess()
// 显式声明参数(顺序必须和存储过程一致)
.declareParameters(
new SqlParameter("v_wono", Types.VARCHAR), // IN
new SqlParameter("v_prtno", Types.VARCHAR), // IN
new SqlParameter("v_flag", Types.VARCHAR), // IN
new SqlParameter("v_reqqty", Types.DOUBLE), // IN
new SqlParameter("v_amount", Types.DOUBLE), // IN
new SqlOutParameter("v_excnote", Types.VARCHAR),// OUT
new SqlOutParameter("v_excflag", Types.VARCHAR) // OUT
);
// 2. 封装输入参数
Map<String, Object> inParams = new HashMap<>();
inParams.put("v_wono", extraBill == null ? "" : extraBill);
inParams.put("v_prtno", goodsCode == null ? "" : goodsCode);
inParams.put("v_flag", flag == null ? "" : flag);
inParams.put("v_reqqty", qty == null ? 0D : qty);
inParams.put("v_amount", amount == null ? 0D : amount);
// 3. 执行并获取结果 Map
Map<String, Object> resultMap = jdbcCall.execute(inParams);
// 4. 提取输出参数
String excflag = (String) resultMap.get("v_excflag");
String excnote = (String) resultMap.get("v_excnote");
// 5. 业务判断
if ("0".equals(excflag)) {
throw new BusinessException("申报信息修改或删除erp失败!" + excnote);
}
return excflag;
}
@Override
public String createMoldPlan(String partCode, String moCode, String plantype, Double quantity, Date needDate, String level,
String keeper, String createMan, String memo, String urgentType, String erpWoCode) throws BusinessException{
@ -215,9 +258,66 @@ public class ErpDataWmsServiceImpl implements IErpDataWmsService {
return excflag;
}
@Override
public String sendErpMaintenance(String goodsCode, String shCode, String location, Date needDate,
String flag ,Double checkQty, String quantityLevel) throws BusinessException {
// 1. 创建存储过程调用
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
// 存储过程名 + DBLink
.withProcedureName("dba_mgr.pro_rbmestoolchkmtn")
// 关闭元数据(DBLink必须加)
.withoutProcedureColumnMetaDataAccess()
// 声明参数:顺序必须和存储过程一致!
.declareParameters(
new SqlParameter("v_prtno", Types.VARCHAR),
new SqlParameter("v_warno", Types.VARCHAR),
new SqlParameter("v_warlocno", Types.VARCHAR),
new SqlParameter("v_applydate", Types.DATE),
new SqlParameter("v_typeflag", Types.VARCHAR),
new SqlParameter("v_chkqty", Types.DOUBLE),
new SqlParameter("v_prtlotno", Types.VARCHAR),
new SqlOutParameter("v_excnote", Types.VARCHAR),
new SqlOutParameter("v_excflag", Types.VARCHAR)
);
// 2. 封装输入参数
Map<String, Object> inParams = new HashMap<>();
inParams.put("v_prtno", goodsCode);
inParams.put("v_warno", shCode);
inParams.put("v_warlocno", location);
inParams.put("v_applydate", needDate);
inParams.put("v_typeflag", flag);
inParams.put("v_chkqty", checkQty);
inParams.put("v_prtlotno", quantityLevel);
// 3. 执行存储过程
Map<String, Object> resultMap = jdbcCall.execute(inParams);
// 4. 获取输出参数
String excflag = (String) resultMap.get("v_excflag");
String excnote = (String) resultMap.get("v_excnote");
// 5. 业务判断
if ("0".equals(excflag)) {
throw new BusinessException("量具保养发送失败! " + excnote);
}
return excflag;
}
@Override
public StGoodsExtStatusVO getGoodsExtStatus(String goodsCode){
return erpDataWmsMapper.getGoodsExtStatus(goodsCode);
}
@Override
public PurchaseTrackVO getBuyOrderStatus(String extraBill) {
return erpDataWmsMapper.getBuyOrderStatus(extraBill);
}
@Override
public MeasuringToolMaintainVO getMaintenStatus(String goodsCode, String shCode, String location, Date createTime) {
return erpDataWmsMapper.getMaintenStatus(goodsCode, shCode, location, createTime);
}
}

@ -56,9 +56,10 @@ public class StBuyOrderController extends BladeController {
@ApiOperationSupport(order = 1)
@ApiLog("采购申请单 详情")
@Operation(summary = "详情", description = "传入stBuyOrder")
public R<StBuyOrderVO> detail(StBuyOrder stBuyOrder) {
StBuyOrder detail = stBuyOrderService.getOne(Condition.getQueryWrapper(stBuyOrder));
return R.data(StBuyOrderWrapper.build().entityVO(detail));
public R<StBuyOrder> detail(StBuyOrder stBuyOrder) {
// StBuyOrder detail = stBuyOrderService.getOne(Condition.getQueryWrapper(stBuyOrder));
StBuyOrder detail = stBuyOrderService.getDetail(stBuyOrder.getId());
return R.data(detail);
}
/**
* 采购申请单 分页

@ -22,7 +22,6 @@ import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.wms.excel.StMoldApplyForExcel;
import org.springblade.wms.pojo.dto.StMoldApplyForDTO;
import org.springblade.wms.pojo.entity.StBuyOrder;
import org.springblade.wms.pojo.entity.StMoldApplyFor;
import org.springblade.wms.pojo.vo.StMoldApplyForVO;
import org.springblade.wms.service.IStMoldApplyForService;

@ -100,16 +100,16 @@ public class StWmsRequestController extends BladeController {
return R.status(stWmsRequestService.save(stWmsRequest));
}
// /**
// * 仓库提请记录 修改
// */
// @PostMapping("/update")
// @ApiOperationSupport(order = 5)
// @ApiLog("仓库提请记录 修改")
// @Operation(summary = "修改", description = "传入stWmsRequest")
// public R update(@Valid @RequestBody StWmsRequest stWmsRequest) {
// return R.status(stWmsRequestService.updateByErp(stWmsRequest));
// }
/**
* 仓库提请记录 修改
*/
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@ApiLog("仓库提请记录 修改")
@Operation(summary = "修改", description = "传入stWmsRequest")
public R update(@Valid @RequestBody StWmsRequest stWmsRequest) {
return R.status(stWmsRequestService.updateByErp(stWmsRequest));
}
/**
* 仓库提请提交
@ -158,7 +158,7 @@ public class StWmsRequestController extends BladeController {
@ApiLog("仓库提请记录 删除")
@Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(stWmsRequestService.deleteLogic(Func.toLongList(ids)));
return R.status(stWmsRequestService.deleteByErp(Func.toLongList(ids)));
}
/**

@ -60,6 +60,8 @@ public interface IStBuyOrderService extends BaseService<StBuyOrder> {
Long buyOrderApplyFor(String goodsCode, Double buyQty, Long userId, Date buyDate, Long checkUserId, Date checkDate) throws Exception;
StBuyOrder getDetail(Long id);
// JSONObject otherPlanDetail(Long id, String prtno);
}

@ -45,5 +45,9 @@ public interface IStWmsRequestService extends BaseService<StWmsRequest> {
void approvalRequest(Long id, Short approvalResult, BladeUser user);
void batchSaveOrEdit(List<StWmsRequest> stWmsRequestList, BladeUser user);
boolean updateByErp(StWmsRequest stWmsRequest);
boolean deleteByErp(List<Long> longList);
}

@ -13,6 +13,8 @@ import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.desk.common.feign.IMesApprovalRecordClient;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity;
import org.springblade.erpdata.feign.IErpDataWmsClient;
import org.springblade.erpdata.pojo.vo.PurchaseTrackVO;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
@ -54,6 +56,8 @@ public class StBuyOrderServiceImpl extends BaseServiceImpl<StBuyOrderMapper, StB
private IUserClient userClient;
@Resource
private ISysClient sysClient;
@Resource
private IErpDataWmsClient erpDataWmsClient;
@Override
public IPage<StBuyOrderVO> selectStBuyOrderPage(IPage<StBuyOrderVO> page, StBuyOrderVO stBuyOrder) {
@ -374,6 +378,27 @@ public class StBuyOrderServiceImpl extends BaseServiceImpl<StBuyOrderMapper, StB
return baseMapper.getByExtraBill(extraBill);
}
@Override
public StBuyOrder getDetail(Long id) {
StBuyOrder buyOrder = this.getById(id);
PurchaseTrackVO purchaseTrackVO = erpDataWmsClient.getBuyOrderStatus(buyOrder.getExtraBill()).getData();
if (purchaseTrackVO == null) {
System.out.println("ERP未查到数据");
}
buyOrder.setErpBuyCode(purchaseTrackVO.getRpno());
buyOrder.setNeedStatus(purchaseTrackVO.getReqstat());
List<User> userList = userClient.listByNameNolike(purchaseTrackVO.getRelctrlerName());
buyOrder.setPlanBuyMan(userList.get(0).getId());
buyOrder.setPlanBuyManName(purchaseTrackVO.getRelctrlerName());
List<User> users = userClient.listByNameNolike(purchaseTrackVO.getPurcodeName());
buyOrder.setBuyMan(users.get(0).getId());
buyOrder.setBuyManName(purchaseTrackVO.getPurcodeName());
this.updateById(buyOrder);
return buyOrder;
}
// @Override
// public JSONObject otherPlanDetail(Long boId, String goodsCode) {
//// JSONObject o = (JSONObject) prPlateGoodsRecordWebService.listByRecordDetail(boId,goodsCode);

@ -1,5 +1,6 @@
package org.springblade.wms.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
@ -24,7 +25,6 @@ import org.springblade.wms.pojo.entity.StGoods;
import org.springblade.wms.pojo.entity.StWmsRequest;
import org.springblade.wms.pojo.vo.StWmsRequestVO;
import org.springblade.wms.service.IStBuyOrderService;
import org.springblade.wms.service.IStGoodsService;
import org.springblade.wms.service.IStWmsRequestService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -225,19 +225,60 @@ public class StWmsRequestServiceImpl extends BaseServiceImpl<StWmsRequestMapper,
String excNote = (String) param.get("v_excnote");
}
// @Override
// public boolean updateByErp(StWmsRequest stWmsRequest){
//// StBuyOrder stBuyOrder = stBuyOrderService.getById(stWmsRequest.getBoId());
//// StGoods goods = stGoodsMapper.selectById(stBuyOrder.getGoodsId());
//// erpDataWmsClient.createOrReplace(
//// stBuyOrder.getExtraBill(),
//// goods.getGoodsCode(),
//// "0",
//// stWmsRequest.getRequestQty(),
//// stWmsRequest.getRequestQty()
//// );
// return false;
// }
@Override
public boolean updateByErp(StWmsRequest stWmsRequest){
StBuyOrder stBuyOrder = stBuyOrderService.getById(stWmsRequest.getBoId());
StGoods goods = stGoodsMapper.selectById(stBuyOrder.getGoodsId());
StWmsRequest oldRequest = this.getById(stWmsRequest);
try {
erpDataWmsClient.createOrReplace(
stBuyOrder.getExtraBill(),
goods.getGoodsCode(),
"0",
oldRequest.getRequestQty(),
stWmsRequest.getRequestQty());
} catch (BusinessException e) {
throw new RuntimeException("仓库提请修改ERP失败:" + e.getMessage());
}
Double afterQty = stBuyOrder.getDrawQuantity() - oldRequest.getRequestQty() + stWmsRequest.getRequestQty();
stBuyOrder.setDrawQuantity(afterQty);
stBuyOrder.setSurDrawQty(stBuyOrder.getBuyQty() - afterQty);
stBuyOrderService.updateById(stBuyOrder);
this.updateById(stWmsRequest);
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deleteByErp(List<Long> deleteIds){
if (CollUtil.isNotEmpty(deleteIds)) {
for (Long id : deleteIds) {
StWmsRequest stWmsRequest = this.getById(id);
StBuyOrder stBuyOrder = stBuyOrderService.getById(stWmsRequest.getBoId());
StGoods goods = stGoodsMapper.selectById(stBuyOrder.getGoodsId());
if (stWmsRequest == null) continue;
try {
erpDataWmsClient.createOrReplace(
stBuyOrder.getExtraBill(),
goods.getGoodsCode(),
"1",
stWmsRequest.getRequestQty(),
0.0);
} catch (BusinessException e) {
throw new RuntimeException("删除模具计划失败:" + e.getMessage());
}
Double afterQty = stBuyOrder.getDrawQuantity() - stWmsRequest.getRequestQty();
stBuyOrder.setDrawQuantity(afterQty);
stBuyOrder.setSurDrawQty(stBuyOrder.getBuyQty() - afterQty);
stBuyOrderService.updateById(stBuyOrder);
}
}
return this.deleteLogic(deleteIds);
}
@Override
public List<StWmsRequestExcel> exportStWmsRequest(Wrapper<StWmsRequest> queryWrapper) {

Loading…
Cancel
Save