change - 按收料通知单收料的数量限制入库、剩余出库数量提醒

master
yinq 1 day ago
parent f722b78068
commit dbe44bba43

@ -162,7 +162,7 @@ public class WmsMobileController extends BaseController {
@Log(title = "原材料出库记录", businessType = BusinessType.CONFIRM) @Log(title = "原材料出库记录", businessType = BusinessType.CONFIRM)
@PostMapping(("/confirmRawOutstock")) @PostMapping(("/confirmRawOutstock"))
public AjaxResult confirmRawOutstock(@Validated @RequestBody WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo) { public AjaxResult confirmRawOutstock(@Validated @RequestBody WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo) {
return toAjax(wmsRawOutstockService.confirmWmsRawOutstock(wmsRawOutstockConfirmVo)); return success(wmsRawOutstockService.confirmWmsRawOutstock(wmsRawOutstockConfirmVo));
} }

@ -156,6 +156,32 @@ public class WmsRawInstock extends BaseEntity
*/ */
private String billNo; private String billNo;
/**
* ID
*/
private Long receiveBillId;
/**
*
*/
private BigDecimal actLandAmount;
public BigDecimal getActLandAmount() {
return actLandAmount;
}
public void setActLandAmount(BigDecimal actLandAmount) {
this.actLandAmount = actLandAmount;
}
public Long getReceiveBillId() {
return receiveBillId;
}
public void setReceiveBillId(Long receiveBillId) {
this.receiveBillId = receiveBillId;
}
public String getBillNo() { public String getBillNo() {
return billNo; return billNo;
} }

@ -110,4 +110,12 @@ public interface WmsRawInstockMapper
public WmsRawInstock fourthFloorLatestInstockList(); public WmsRawInstock fourthFloorLatestInstockList();
/**
*
* @param materialBarcode
* @return
*/
WmsRawInstock selectPurchaseReceiveBillByBarcode(String materialBarcode);
} }

@ -85,7 +85,7 @@ public interface IWmsRawOutstockService
* @param wmsRawOutstockConfirmVo * @param wmsRawOutstockConfirmVo
* @return * @return
*/ */
public int confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo); public String confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo);
/** /**
* 使 * 使

@ -1,6 +1,7 @@
package com.hw.wms.service.impl; package com.hw.wms.service.impl;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -10,6 +11,7 @@ import com.hw.common.core.constant.WmsConstants;
import com.hw.common.core.domain.R; import com.hw.common.core.domain.R;
import com.hw.common.core.exception.ServiceException; import com.hw.common.core.exception.ServiceException;
import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.DateUtils;
import com.hw.common.core.utils.StringUtils;
import com.hw.common.core.utils.uuid.Seq; import com.hw.common.core.utils.uuid.Seq;
import com.hw.common.security.utils.SecurityUtils; import com.hw.common.security.utils.SecurityUtils;
import com.hw.mes.api.RemoteMesService; import com.hw.mes.api.RemoteMesService;
@ -152,6 +154,7 @@ public class WmsRawInstockServiceImpl implements IWmsRawInstockService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public BigDecimal insertWmsRawInstock(WmsRawInstockVo wmsRawInstockVo) { public BigDecimal insertWmsRawInstock(WmsRawInstockVo wmsRawInstockVo) {
WmsRawInstock wmsRawInstock = new WmsRawInstock();
String materialBarcode = wmsRawInstockVo.getMaterialBarcode(); String materialBarcode = wmsRawInstockVo.getMaterialBarcode();
R<MesBaseBarcodeInfo> baseBarcodeInfoR = remoteMesService.getBarcode(materialBarcode, SecurityConstants.INNER); R<MesBaseBarcodeInfo> baseBarcodeInfoR = remoteMesService.getBarcode(materialBarcode, SecurityConstants.INNER);
if (baseBarcodeInfoR == null) { if (baseBarcodeInfoR == null) {
@ -190,9 +193,23 @@ public class WmsRawInstockServiceImpl implements IWmsRawInstockService {
} }
} }
//按收料通知单收料的数量限制入库
WmsRawInstock checkRawInstock = wmsRawInstockMapper.selectPurchaseReceiveBillByBarcode(materialBarcode);
if (StringUtils.isNotNull(checkRawInstock) && StringUtils.isNotNull(checkRawInstock.getReceiveBillId())){
wmsRawInstock.setReceiveBillId(checkRawInstock.getReceiveBillId());
BigDecimal actLandAmount = checkRawInstock.getActLandAmount();
if (instockAmount.subtract(actLandAmount).compareTo(BigDecimal.ZERO) > 0) {
throw new ServiceException("入库数量超出收料通知单数量(" + actLandAmount.setScale(2, RoundingMode.HALF_UP) + ",无法入库!");
}
//可入库数量
BigDecimal availableAmount = actLandAmount.subtract(checkRawInstock.getInstockAmount());
if (instockAmount.subtract(availableAmount).compareTo(BigDecimal.ZERO) > 0) {
throw new ServiceException("可入库数量为" + checkRawInstock.getActLandAmount().setScale(2, RoundingMode.HALF_UP) + ",无法入库!");
}
}
Date currentDate = new Date(); Date currentDate = new Date();
String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname();
WmsRawInstock wmsRawInstock = new WmsRawInstock();
wmsRawInstock.setTaskCode(Seq.getId(Seq.rawInstockSeqType, Seq.rawInstockSeqCode)); wmsRawInstock.setTaskCode(Seq.getId(Seq.rawInstockSeqType, Seq.rawInstockSeqCode));
wmsRawInstock.setWarehouseId(baseLocation.getWarehouseId()); wmsRawInstock.setWarehouseId(baseLocation.getWarehouseId());
wmsRawInstock.setLocationCode(locationCode); wmsRawInstock.setLocationCode(locationCode);

@ -35,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -299,11 +300,12 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService {
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public int confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo) { public String confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo) {
Long rawOutstockId = wmsRawOutstockConfirmVo.getRawOutstockDetailId(); Long rawOutstockId = wmsRawOutstockConfirmVo.getRawOutstockDetailId();
String locationCode = wmsRawOutstockConfirmVo.getLocationCode(); String locationCode = wmsRawOutstockConfirmVo.getLocationCode();
String materialBarcode = wmsRawOutstockConfirmVo.getInstockBatch();//在此是物料条码,不是批次码 String materialBarcode = wmsRawOutstockConfirmVo.getInstockBatch();//在此是物料条码,不是批次码
BigDecimal outstockAmount = wmsRawOutstockConfirmVo.getOutstockAmount(); BigDecimal outstockAmount = wmsRawOutstockConfirmVo.getOutstockAmount();
String result = "操作成功";
if (outstockAmount.compareTo(BigDecimal.ZERO) <= 0) { if (outstockAmount.compareTo(BigDecimal.ZERO) <= 0) {
throw new ServiceException("数量需大于0"); throw new ServiceException("数量需大于0");
} }
@ -353,14 +355,14 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService {
} }
WmsRawOutstockDetail queryRawOutstockDetail = new WmsRawOutstockDetail(); // WmsRawOutstockDetail queryRawOutstockDetail = new WmsRawOutstockDetail();
queryRawOutstockDetail.setRawOutstockId(wmsRawOutstock.getRawOutstockId()); // queryRawOutstockDetail.setRawOutstockId(wmsRawOutstock.getRawOutstockId());
queryRawOutstockDetail.setLocationCode(locationCode); // queryRawOutstockDetail.setLocationCode(locationCode);
queryRawOutstockDetail.setMaterialBarcode(materialBarcode); // queryRawOutstockDetail.setMaterialBarcode(materialBarcode);
int rawOutstockDetailCount = wmsRawOutstockDetailMapper.selectCountOfWmsRawOutstockDetail(queryRawOutstockDetail); // int rawOutstockDetailCount = wmsRawOutstockDetailMapper.selectCountOfWmsRawOutstockDetail(queryRawOutstockDetail);
if (rawOutstockDetailCount > 0) { // if (rawOutstockDetailCount > 0 && !batchFlag.equals(MesConstants.IS_BATCH)) {
throw new ServiceException("此物料已经出库,不能重复出库"); // throw new ServiceException("此物料已经出库,不能重复出库");
} // }
// if (wmsRawOutstockDetail.getQualityStatus() != null // if (wmsRawOutstockDetail.getQualityStatus() != null
// && !wmsRawOutstockDetail.getQualityStatus().equals(WmsConstants.WMS_QUALITY_STATUS_PASS)) { // && !wmsRawOutstockDetail.getQualityStatus().equals(WmsConstants.WMS_QUALITY_STATUS_PASS)) {
@ -376,6 +378,10 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService {
throw new ServiceException("出库数量不能大于" + planOutstockAmount.subtract(hadOutstockAmount)); throw new ServiceException("出库数量不能大于" + planOutstockAmount.subtract(hadOutstockAmount));
} }
if (updatedOutstockAmount.compareTo(planOutstockAmount) < 0) {
result = "剩余出库数量:" + planOutstockAmount.subtract(updatedOutstockAmount).setScale(2, RoundingMode.HALF_UP);
}
Date currentDate = new Date(); Date currentDate = new Date();
String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname();
@ -399,7 +405,7 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService {
//rawstock的trigger中更新stocktotal的占用数量和库存数量 //rawstock的trigger中更新stocktotal的占用数量和库存数量
return 1; return result;
} }
public WmsRawOutstock getWmsRawOutstock(WmsBaseLocation baseLocation, MesBaseBarcodeInfo baseBarcodeInfo) { public WmsRawOutstock getWmsRawOutstock(WmsBaseLocation baseLocation, MesBaseBarcodeInfo baseBarcodeInfo) {

@ -44,10 +44,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="fsBillId" column="fs_bill_id" /> <result property="fsBillId" column="fs_bill_id" />
<result property="fsId" column="fs_id" /> <result property="fsId" column="fs_id" />
<result property="billNo" column="bill_no" /> <result property="billNo" column="bill_no" />
<result property="receiveBillId" column="receive_bill_id" />
<result property="actLandAmount" column="act_land_amount" />
</resultMap> </resultMap>
<sql id="selectWmsRawInstockVo"> <sql id="selectWmsRawInstockVo">
select raw_instock_id, task_code, warehouse_id, location_code, po_no, operation_type, instock_type, material_id, material_barcode, material_batch_code, pallet_info_code, instock_amount, execute_status, erp_status, erp_amount, apply_by, apply_date, machine_name, quality_status, update_by, update_date, begin_time, end_time from wms_raw_instock select raw_instock_id, task_code, warehouse_id, location_code, po_no, operation_type, instock_type, material_id, material_barcode, material_batch_code, pallet_info_code, instock_amount, execute_status, erp_status, erp_amount, apply_by, apply_date, machine_name, quality_status, update_by, update_date, begin_time, end_time, receive_bill_id from wms_raw_instock
</sql> </sql>
<select id="selectWmsRawInstockList" parameterType="WmsRawInstock" resultMap="WmsRawInstockResult"> <select id="selectWmsRawInstockList" parameterType="WmsRawInstock" resultMap="WmsRawInstockResult">
@ -104,6 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateDate != null">update_date,</if> <if test="updateDate != null">update_date,</if>
<if test="beginTime != null">begin_time,</if> <if test="beginTime != null">begin_time,</if>
<if test="endTime != null">end_time,</if> <if test="endTime != null">end_time,</if>
<if test="receiveBillId != null">receive_bill_id,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="taskCode != null">#{taskCode},</if> <if test="taskCode != null">#{taskCode},</if>
@ -131,6 +134,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateDate != null">#{updateDate},</if> <if test="updateDate != null">#{updateDate},</if>
<if test="beginTime != null">#{beginTime},</if> <if test="beginTime != null">#{beginTime},</if>
<if test="endTime != null">#{endTime},</if> <if test="endTime != null">#{endTime},</if>
<if test="receiveBillId != null">#{receiveBillId},</if>
</trim> </trim>
</insert> </insert>
@ -159,6 +163,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateDate != null">update_date = #{updateDate},</if> <if test="updateDate != null">update_date = #{updateDate},</if>
<if test="beginTime != null">begin_time = #{beginTime},</if> <if test="beginTime != null">begin_time = #{beginTime},</if>
<if test="endTime != null">end_time = #{endTime},</if> <if test="endTime != null">end_time = #{endTime},</if>
<if test="receiveBillId != null">receive_bill_id = #{receiveBillId},</if>
</trim> </trim>
where raw_instock_id = #{rawInstockId} where raw_instock_id = #{rawInstockId}
</update> </update>
@ -340,4 +345,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and x.apply_date > now() - interval 1 year and x.apply_date > now() - interval 1 year
</select> </select>
<select id="selectPurchaseReceiveBillByBarcode" parameterType="WmsRawInstock" resultMap="WmsRawInstockResult">
select bbi.barcode_info material_barcode,
bbi.receive_bill_id,
mprb.act_land_amount,
(select IF(SUM(instock_amount) IS NULL, 0, SUM(instock_amount))
from wms_raw_instock wr
where wr.receive_bill_id = bbi.receive_bill_id) instock_amount
from mes_base_barcode_info bbi
left join mes_purchase_receive_bill mprb on mprb.receive_bill_id = bbi.receive_bill_id
where bbi.barcode_info = #{materialBarcode}
limit 1
</select>
</mapper> </mapper>

Loading…
Cancel
Save