生产工单,批次编辑

master
shaoyong 1 year ago
parent dd9bfb5496
commit 25d20b25c6

@ -7,9 +7,11 @@ import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.op.common.core.exception.ServiceException; import com.op.common.core.exception.ServiceException;
import com.op.plan.domain.ProOrder; import com.op.plan.domain.ProOrder;
import com.op.plan.domain.ProOrderWorkorderBatch;
import com.op.plan.domain.dto.SplitOrderDTO; import com.op.plan.domain.dto.SplitOrderDTO;
import com.op.plan.service.IProWetMaterialPlanDetailService; import com.op.plan.service.IProWetMaterialPlanDetailService;
import com.op.plan.service.IProWetMaterialPlanService; import com.op.plan.service.IProWetMaterialPlanService;
import org.aspectj.weaver.loadtime.Aj;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
@ -267,4 +269,37 @@ public class ProOrderWorkorderController extends BaseController {
public List<ProOrderWorkorder> getUnReadComment(@RequestBody ProOrderWorkorder proOrderWorkorder) { public List<ProOrderWorkorder> getUnReadComment(@RequestBody ProOrderWorkorder proOrderWorkorder) {
return proOrderWorkorderService.getUnReadComment(proOrderWorkorder); return proOrderWorkorderService.getUnReadComment(proOrderWorkorder);
} }
@RequiresPermissions("mes:pro:workorder:edit")
@Log(title = "批次编辑", businessType = BusinessType.OTHER)
@GetMapping("/getWorkOrderBatch/{workOrderCode}")
public TableDataInfo getWorkOrderBatch(@PathVariable String workOrderCode) {
List<ProOrderWorkorderBatch> list = proOrderWorkorderService.getWorkOrderBatch(workOrderCode);
return getDataTable(list);
}
@RequiresPermissions("mes:pro:workorder:edit")
@GetMapping("/getWorkOrderBatchInfo")
public AjaxResult getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch) {
return success(proOrderWorkorderService.getWorkOrderBatchInfo(proOrderWorkorderBatch));
}
@RequiresPermissions("mes:pro:workorder:edit")
@PostMapping("/insertWorkOrderBatch")
public AjaxResult insertWorkOrderBatch(@RequestBody ProOrderWorkorderBatch proOrderWorkorderBatch) {
return toAjax(proOrderWorkorderService.insertWorkOrderBatch(proOrderWorkorderBatch));
}
@RequiresPermissions("mes:pro:workorder:edit")
@PutMapping("/updateWorkOrderBatch")
public AjaxResult updateWorkOrderBatch(@RequestBody ProOrderWorkorderBatch proOrderWorkorderBatch) {
return toAjax(proOrderWorkorderService.updateWorkOrderBatch(proOrderWorkorderBatch));
}
@RequiresPermissions("mes:pro:workorder:edit")
@DeleteMapping("/removeWorkOrderBatch/{batchCode}/{workOrderCode}")
public AjaxResult removeWorkOrderBatch(@PathVariable("batchCode") String batchCode,
@PathVariable("workOrderCode")String workorderCode) {
ProOrderWorkorderBatch newBatch = new ProOrderWorkorderBatch();
newBatch.setBatchCode(batchCode);
newBatch.setWorkorderCode(workorderCode);
return toAjax(proOrderWorkorderService.deleteWorkOrderBatch(newBatch));
}
} }

@ -79,6 +79,11 @@ public class ProOrderWorkorderBatch extends BaseEntity {
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String factoryCode; private String factoryCode;
private String workorderCode;
private String newBatchCode;
private Long newBatchQuantity;
public void setBatchId(String batchId) { public void setBatchId(String batchId) {
this.batchId = batchId; this.batchId = batchId;
} }
@ -167,6 +172,30 @@ public class ProOrderWorkorderBatch extends BaseEntity {
return factoryCode; return factoryCode;
} }
public String getWorkorderCode() {
return workorderCode;
}
public void setWorkorderCode(String workorderCode) {
this.workorderCode = workorderCode;
}
public String getNewBatchCode() {
return newBatchCode;
}
public void setNewBatchCode(String newBatchCode) {
this.newBatchCode = newBatchCode;
}
public Long getNewBatchQuantity() {
return newBatchQuantity;
}
public void setNewBatchQuantity(Long newBatchQuantity) {
this.newBatchQuantity = newBatchQuantity;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

@ -81,5 +81,9 @@ public interface ProOrderWorkorderBatchMapper {
public int deleteBatch(String[] workorderIds); public int deleteBatch(String[] workorderIds);
int updateWorkorderBatch(ProOrderWorkorderBatch batch);
int deleteWorkOrderBatch(@Param("batchCode") String batchCode,@Param("workOrderIds") String[] workOrderIds);
List<String> checkBatchCodeByWorkOrderIds(@Param("workorderIds")String[] workorderIds,@Param("newbatchs") List<String> newbatchs); List<String> checkBatchCodeByWorkOrderIds(@Param("workorderIds")String[] workorderIds,@Param("newbatchs") List<String> newbatchs);
} }

@ -1,9 +1,6 @@
package com.op.plan.mapper; package com.op.plan.mapper;
import com.op.plan.domain.Batch; import com.op.plan.domain.*;
import com.op.plan.domain.ProOrder;
import com.op.plan.domain.ProOrderWorkorder;
import com.op.plan.domain.ProWetMaterialPlanDetail;
import com.op.system.api.domain.dto.BaseBomComponentDTO; import com.op.system.api.domain.dto.BaseBomComponentDTO;
import com.op.system.api.domain.dto.MesPrepareDTO; import com.op.system.api.domain.dto.MesPrepareDTO;
import com.op.system.api.domain.dto.MesPrepareDetailDTO; import com.op.system.api.domain.dto.MesPrepareDetailDTO;
@ -207,5 +204,11 @@ public interface ProOrderWorkorderMapper {
int deleteWetMaterial(@Param("orderIds")String[] workorderIds); int deleteWetMaterial(@Param("orderIds")String[] workorderIds);
List<ProOrderWorkorder> getUnReadComment(ProOrderWorkorder proOrderWorkorder); List<ProOrderWorkorder> getUnReadComment(ProOrderWorkorder proOrderWorkorder);
List<ProOrderWorkorderBatch> getWorkOrderBatch(@Param("workOrderCode") String workOrderCode);
ProOrderWorkorderBatch getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch);
List<ProOrderWorkorder> selectWorkOrderIdByBatch(@Param("workorderCode") String workorderCode);
} }

@ -3,6 +3,7 @@ package com.op.plan.service;
import com.op.common.core.web.domain.AjaxResult; import com.op.common.core.web.domain.AjaxResult;
import com.op.plan.domain.ProOrderWorkorder; import com.op.plan.domain.ProOrderWorkorder;
import com.op.plan.domain.ProOrderWorkorderBatch;
import com.op.plan.domain.dto.SplitOrderDTO; import com.op.plan.domain.dto.SplitOrderDTO;
import java.util.List; import java.util.List;
@ -137,4 +138,13 @@ public interface IProOrderWorkorderService {
int deleteWetMaterial(String[] workorderIds); int deleteWetMaterial(String[] workorderIds);
List<ProOrderWorkorder> getUnReadComment(ProOrderWorkorder proOrderWorkorder); List<ProOrderWorkorder> getUnReadComment(ProOrderWorkorder proOrderWorkorder);
List<ProOrderWorkorderBatch> getWorkOrderBatch(String workOrderId);
ProOrderWorkorderBatch getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch);
int insertWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch);
int updateWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch);
int deleteWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch);
} }

@ -1133,6 +1133,131 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
return dtos; return dtos;
} }
@Override
@DS("#header.poolName")
public List<ProOrderWorkorderBatch> getWorkOrderBatch(String workOrderCode) {
List<ProOrderWorkorderBatch> workOrderBatch = proOrderWorkorderMapper.getWorkOrderBatch(workOrderCode);
return workOrderBatch;
}
@Override
@DS("#header.poolName")
public ProOrderWorkorderBatch getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch) {
return proOrderWorkorderMapper.getWorkOrderBatchInfo(proOrderWorkorderBatch);
}
@Override
@DS("#header.poolName")
public int insertWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch) {
String workOrderCode = proOrderWorkorderBatch.getWorkorderCode();
String username = SecurityUtils.getUsername();
Long newBatchQuantity = proOrderWorkorderBatch.getNewBatchQuantity();
if (newBatchQuantity == null) {
return 0;
}
List<ProOrderWorkorder> workOrders = proOrderWorkorderMapper.selectWorkOrderIdByBatch(workOrderCode);
// 获取子母工单数量
Optional<Long> pQuantity = workOrders.stream().filter(item -> "0".equals(item.getParentOrder()))
.findFirst().map(ProOrderWorkorder::getQuantitySplit);
Optional<Long> cQuantity = workOrders.stream().filter(item -> !"0".equals(item.getParentOrder()))
.findFirst().map(ProOrderWorkorder::getQuantitySplit);
// 系数
Long coefficient = 0L;
if (pQuantity.isPresent() && cQuantity.isPresent()) {
coefficient = cQuantity.get() / pQuantity.get();
}
int count = 0;
for (ProOrderWorkorder workOrder : workOrders) {
ProOrderWorkorderBatch batch = new ProOrderWorkorderBatch();
batch.setBatchId(IdUtils.fastSimpleUUID());
batch.setWorkorderId(workOrder.getWorkorderId());
batch.setBatchCode(proOrderWorkorderBatch.getNewBatchCode());
batch.setStatus("0");
batch.setCreateBy(username);
Date nowDate = DateUtils.getNowDate();
batch.setCreateTime(nowDate);
batch.setUpdateBy(username);
batch.setUpdateTime(nowDate);
if ("0".equals(workOrder.getParentOrder())) {
// 设置父工单数量
batch.setBatchQuantity(newBatchQuantity);
}else {
// 设置子工单数量
batch.setBatchQuantity(newBatchQuantity * coefficient);
}
count += proOrderWorkorderBatchMapper.insertProOrderWorkorderBatch(batch);
}
return count;
}
@Override
@DS("#header.poolName")
public int updateWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch) {
String workOrderCode = proOrderWorkorderBatch.getWorkorderCode();
String username = SecurityUtils.getUsername();
Long newBatchQuantity = proOrderWorkorderBatch.getNewBatchQuantity();
if (newBatchQuantity == null) {
return 0;
}
List<ProOrderWorkorder> workOrders = proOrderWorkorderMapper.selectWorkOrderIdByBatch(workOrderCode);
// 获取子母工单数量
Optional<Long> pQuantity = workOrders.stream().filter(item -> "0".equals(item.getParentOrder()))
.findFirst().map(ProOrderWorkorder::getQuantitySplit);
Optional<Long> cQuantity = workOrders.stream().filter(item -> !"0".equals(item.getParentOrder()))
.findFirst().map(ProOrderWorkorder::getQuantitySplit);
// 系数
Long coefficient = 0L;
if (pQuantity.isPresent() && cQuantity.isPresent()) {
coefficient = cQuantity.get() / pQuantity.get();
}
int count = 0;
for (ProOrderWorkorder workOrder : workOrders) {
ProOrderWorkorderBatch batch = new ProOrderWorkorderBatch();
batch.setBatchId(IdUtils.fastSimpleUUID());
batch.setWorkorderId(workOrder.getWorkorderId());
// 获取新旧批次号
batch.setBatchCode(proOrderWorkorderBatch.getBatchCode());
batch.setNewBatchCode(proOrderWorkorderBatch.getNewBatchCode());
batch.setStatus("0");
batch.setUpdateBy(username);
batch.setUpdateTime(DateUtils.getNowDate());
if ("0".equals(workOrder.getParentOrder())) {
// 设置父工单数量
batch.setNewBatchQuantity(newBatchQuantity);
}else {
// 设置子工单数量
batch.setNewBatchQuantity(newBatchQuantity * coefficient);
}
count += proOrderWorkorderBatchMapper.updateWorkorderBatch(batch);
}
return count;
}
@Override
@DS("#header.poolName")
public int deleteWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch) {
String workOrderCode = proOrderWorkorderBatch.getWorkorderCode();
List<ProOrderWorkorder> workOrders = proOrderWorkorderMapper.selectWorkOrderIdByBatch(workOrderCode);
String[] workOrderIds = workOrders.stream().map(ProOrderWorkorder::getWorkorderId).toArray(String[]::new);
String batchCode = proOrderWorkorderBatch.getBatchCode();
return proOrderWorkorderBatchMapper.deleteWorkOrderBatch(batchCode,workOrderIds);
}
/** /**
* *
* 湿 * 湿

@ -143,6 +143,28 @@
</trim> </trim>
where workorder_id = #{workorderId} where workorder_id = #{workorderId}
</update> </update>
<update id="updateWorkorderBatch" parameterType="ProOrderWorkorderBatch">
update pro_order_workorder_batch
<trim prefix="SET" suffixOverrides=",">
<if test="batchId != null and batchId != ''">batch_id = #{batchId},</if>
<if test="newBatchCode != null">batch_code = #{newBatchCode},</if>
<if test="newBatchQuantity != null">batch_quantity = #{newBatchQuantity},</if>
<if test="status != null">status = #{status},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="attr1 != null">attr1 = #{attr1},</if>
<if test="attr2 != null">attr2 = #{attr2},</if>
<if test="attr3 != null">attr3 = #{attr3},</if>
<if test="attr4 != null">attr4 = #{attr4},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="prodType != null">prod_type = #{prodType},</if>
<if test="factoryCode != null">factory_code = #{factoryCode},</if>
</trim>
where workorder_id = #{workorderId} and batch_code = #{batchCode}
and del_flag = '0'
</update>
<delete id="deleteProOrderWorkorderBatchByWorkorderId" parameterType="String"> <delete id="deleteProOrderWorkorderBatchByWorkorderId" parameterType="String">
update pro_order_workorder_batch update pro_order_workorder_batch
@ -169,5 +191,13 @@
#{workorderId} #{workorderId}
</foreach> </foreach>
</delete> </delete>
<delete id="deleteWorkOrderBatch">
update pro_order_workorder_batch
set del_flag = '1'
where batch_code = #{batchCode} and workorder_id in
<foreach item="workOrderId" collection="workOrderIds" open="(" separator="," close=")">
#{workOrderId}
</foreach>
</delete>
</mapper> </mapper>

@ -603,6 +603,37 @@
order by pow.product_date desc order by pow.product_date desc
</select> </select>
<select id="getWorkOrderBatch" resultType="com.op.plan.domain.ProOrderWorkorderBatch">
select pow.workorder_code workorderCode,
powb.batch_code batchCode,
powb.batch_quantity batchQuantity
from pro_order_workorder pow
left join pro_order_workorder_batch powb on pow.workorder_id = powb.workorder_id
where powb.del_flag = '0'
and pow.workorder_code = #{workOrderCode}
order by powb.batch_code
</select>
<select id="getWorkOrderBatchInfo" resultType="com.op.plan.domain.ProOrderWorkorderBatch">
select pow.workorder_code workorderCode,
powb.batch_code batchCode,
powb.batch_quantity batchQuantity
from pro_order_workorder pow
left join pro_order_workorder_batch powb on pow.workorder_id = powb.workorder_id
where powb.del_flag = '0'
and pow.workorder_code = #{workorderCode}
and powb.batch_code = #{batchCode}
order by powb.batch_code
</select>
<select id="selectWorkOrderIdByBatch" resultType="com.op.plan.domain.ProOrderWorkorder">
select workorder_id workorderId,
quantity_split quantitySplit,
parent_order parentOrder
from pro_order_workorder
where belong_work_order = #{workorderCode} and del_flag = '0'
</select>
<insert id="createPrepareDetails"> <insert id="createPrepareDetails">
insert into mes_prepare_detail insert into mes_prepare_detail
( (

Loading…
Cancel
Save